<?xml version="1.0" encoding="utf-8" ?>
<otrs_package version="1.1">
    <Name>ServiceCatalog</Name>
    <Version>11.0.7</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-08-06 14:44:40" Version="11.0.7">Added translations (#9), fixed an import issue (#10), cleanup dynamic fields on uninstall (#16), fixed issing sysconfig for dynamic field screens (#23).</ChangeLog>
    <ChangeLog Date="2025-11-07 08:24:09" Version="11.0.6">Issue #15: Fix picture upload.</ChangeLog>
    <ChangeLog Date="2025-10-08 13:33:46" Version="11.0.5">Added Service and SLA Import and Export functionality to the UI. Fixed ServiceCatalog upgrade for postgres. Fixed Links to be opened in a new tab from the Service Catalog dashboard tile (Issue #11).</ChangeLog>
    <ChangeLog Date="2025-07-31 13:39:08" Version="11.0.4">Show service descriptions with CustomerUIStyles of OTOBO 11.0.11; Add some basic doc;</ChangeLog>
    <ChangeLog Date="2025-06-06 11:42:29" Version="11.0.3">Larger overhaul which brings translatable services, some changes to the responsive css, and shifts part of the functionality to ITSMCore for better usability together with other packages.</ChangeLog>
    <ChangeLog Date="2024-05-16 12:14:49" Version="11.0.2">Removed css for dashboard layout. Please edit Core.Dashboard.Default.css to your needs.</ChangeLog>
    <ChangeLog Date="2024-04-02 14:14:28" Version="11.0.1">Initial Release on OTOBO 11.</ChangeLog>
    <Description Lang="de">Ein ausführlicher Leistungskatalog.</Description>
    <Description Lang="en">A detailed service catalog.</Description>
    <Description Lang="es">Catálogo de Servicios detallado.</Description>
    <Framework>11.0.x</Framework>
    <IntroInstall Lang="en" Title="Install Information" Type="pre">
        &lt;br&gt;
        WELCOME!&lt;br&gt;
        &lt;br&gt;
        You are about to install the Rother OSS Service Catalog package.&lt;br&gt;
        &lt;br&gt;
        &lt;br&gt;
        &lt;br&gt;
        For more information visit:&lt;br&gt;
        &lt;br&gt;
        https://otobo.de &lt;br&gt;
        &lt;br&gt;
    </IntroInstall>
    <IntroInstall Lang="de" Title="Installationsinformationen" Type="pre">
        &lt;br&gt;
        Herzlich willkommen!&lt;br&gt;
        &lt;br&gt;
        Sie sind dabei, das Rother OSS Service Catalog-Paket zu installieren.&lt;br&gt;
        &lt;br&gt;
        &lt;br&gt;
        &lt;br&gt;
        Weitere Informationen finden Sie unter der URL:&lt;br&gt;
        &lt;br&gt;
        https://otobo.de &lt;br&gt;
        &lt;br&gt;
    </IntroInstall>
    <IntroInstall Lang="es" Title="Información de Instalación" Type="pre">
        &lt;br&gt;
        BIENVENIDO!&lt;br&gt;
        &lt;br&gt;
        Usted está a punto de instalar el paquete del Catálogo de Servicios de Rother OSS.&lt;br&gt;
        &lt;br&gt;
        &lt;br&gt;
        &lt;br&gt;
        Para más información visite:&lt;br&gt;
        &lt;br&gt;
        https://otobo.de &lt;br&gt;
        &lt;br&gt;
    </IntroInstall>
    <IntroInstall Lang="en" Title="Install Information" Type="post">
        &lt;br&gt;
        NOTE:&lt;br&gt;
        &lt;br&gt;
        To show the service catalog to your customers you have to enable the dashboard tile 'CustomerDashboard::Tiles###ServiceCatalog-01'.&lt;br&gt;
        If you don't want to spend time setting your customer dashboard, and just have a look,
        we suggest to temporarily disable your other tile with order 7, which is on a standard installation '###InfoTile-01'.&lt;br&gt;
        &lt;br&gt;
    </IntroInstall>
    <IntroInstall Lang="de" Title="Installationsinformationen" Type="post">
        &lt;br&gt;
        BEACHTE:&lt;br&gt;
        &lt;br&gt;
        Um den Service Catalog Ihren Kunden zugänglich zu machen, ist es nötig die Dashboard-Kachel 'CustomerDashboard::Tiles###ServiceCatalog-01' zu aktivieren.&lt;br&gt;
        Um diese einfach erst einmal anzusehen, ohne das gesamte Dashboard neu setzen zu müssen,
        empfehlen wir vorübergehend die andere Kachel mit &quot;order&quot; 7 zu deaktivieren, auf einer Standart-Installation ist dies '###InfoTile-01'.&lt;br&gt;
        &lt;br&gt;
    </IntroInstall>
    <IntroUpgrade Lang="en" Title="Upgrade Information" Type="post">
        &lt;br&gt;
        NOTE:&lt;br&gt;
        &lt;br&gt;
        When upgrading from version 11.0.2 or lower, please check that 'CustomerDashboard::Tiles###ServiceCatalog-01' is still enabled.&lt;br&gt;
        &lt;br&gt;
    </IntroUpgrade>
    <IntroUpgrade Lang="de" Title="Upgrade-Informationen" Type="post">
        &lt;br&gt;
        BEACHTE:&lt;br&gt;
        &lt;br&gt;
        Wenn Sie von Version 11.0.2 oder niedriger updaten, prüfen Sie bitte, ob 'CustomerDashboard::Tiles###ServiceCatalog-01' noch aktiviert ist.&lt;br&gt;
        &lt;br&gt;
    </IntroUpgrade>
    <PackageMerge Name="RotherOSS-ServiceCatalog" TargetVersion="10.0.4"></PackageMerge>
    <PackageRequired Version="11.0.6">ITSMCore</PackageRequired>
    <CodeUpgrade Type="post" Version="11.0.3">
        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUpgradeFromLowerThan_11_0_3();
    </CodeUpgrade>
    <CodeUninstall Type="pre">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUninstall();
    </CodeUninstall>
    <BuildCommitID>3c01d5002e344a8b6ce7baeb92b60fc45515356d</BuildCommitID>
    <BuildDate>2026-08-06 14:44:45</BuildDate>
    <BuildHost>opms.rother-oss.com</BuildHost>
    <Filelist>
        <File Location="Custom/Kernel/Modules/AdminService.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBlNDRjMThhZWE5YWJjMTI1ZmRkZjljZWVlZDIwNGRiNGZhYjI5MGUwIC0gS2VybmVsL01vZHVsZXMvQWRtaW5TZXJ2aWNlLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZG1pblNlcnZpY2U7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CiMgLS0tCiMgSVRTTUNvcmUKIyAtLS0KdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwojIC0tLQoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIHNldCBwcmVmIGZvciBjb2x1bW5zIGtleQogICAgJFNlbGYtPntQcmVmS2V5SW5jbHVkZUludmFsaWR9ID0gJ0luY2x1ZGVJbnZhbGlkJyAuICctJyAuICRTZWxmLT57QWN0aW9ufTsKCiAgICBteSAlUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA9ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5SW5jbHVkZUludmFsaWR9IH07CgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgIyBnZXQgZm9ybSBpZAogICAgJFNlbGYtPntGb3JtSUR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Zvcm1JRCcgKTsKCiAgICAjIGNyZWF0ZSBmb3JtIGlkCiAgICBpZiAoICEkU2VsZi0+e0Zvcm1JRH0gKSB7CiAgICAgICAgJFNlbGYtPntGb3JtSUR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUnKS0+Rm9ybUlEQ3JlYXRlKCk7CiAgICB9CgogICAgJFNlbGYtPntEeW5hbWljRmllbGRMb29rdXB9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIE9iamVjdFR5cGUgPT4gJ1NlcnZpY2UnLAogICAgKTsKIyBFTyBTZXJ2aWNlQ2F0YWxvZwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJENvbmZpZ09iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJFBhcmFtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkU2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyk7CgogICAgJFBhcmFte0luY2x1ZGVJbnZhbGlkfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdJbmNsdWRlSW52YWxpZCcgKTsKCiAgICBpZiAoIGRlZmluZWQgJFBhcmFte0luY2x1ZGVJbnZhbGlkfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgS2V5ICAgID0+ICRTZWxmLT57UHJlZktleUluY2x1ZGVJbnZhbGlkfSwKICAgICAgICAgICAgVmFsdWUgID0+ICRQYXJhbXtJbmNsdWRlSW52YWxpZH0sCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPntJbmNsdWRlSW52YWxpZH0gPSAkUGFyYW17SW5jbHVkZUludmFsaWR9OwogICAgfQoKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgIG15ICRVcGxvYWRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlJyk7CiMgRU8gU2VydmljZUNhdGFsb2cKCiMgLS0tCiMgSVRTTUNvcmUKIyAtLS0KICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZCBmb3IgSVRTTUNyaXRpY2FsaXR5CiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnQXJyYXlSZWYgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gWyAnVGlja2V0JyBdLAogICAgICAgIEZpZWxkRmlsdGVyID0+IHsKICAgICAgICAgICAgSVRTTUNyaXRpY2FsaXR5ID0+IDEsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZm9yIElUU01Dcml0aWNhbGl0eQogICAgbXkgJVBvc3NpYmxlVmFsdWVzOwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkRHluYW1pY0ZpZWxkQ29uZmlnQXJyYXlSZWYgfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgZ2V0IFBvc3NpYmxlVmFsdWVzCiAgICAgICAgJFBvc3NpYmxlVmFsdWVzeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57UG9zc2libGVWYWx1ZXN9IHx8IHt9OwogICAgfQoKICAgICMgc2V0IHRoZSBjcml0aWNhbGl0eSBsaXN0CiAgICAkU2VsZi0+e0NyaXRpY2FsaXR5TGlzdH0gPSAkUG9zc2libGVWYWx1ZXN7SVRTTUNyaXRpY2FsaXR5fTsKIyAtLS0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHNlcnZpY2UgZWRpdAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NlcnZpY2VFZGl0JyApIHsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgaHRtbCBvdXRwdXQKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5fTWFza05ldygKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzZXJ2aWNlIHNhdmUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTZXJ2aWNlU2F2ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgICMgZ2V0IHBhcmFtcwogICAgICAgIG15ICVHZXRQYXJhbTsKCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiMjIC0tLQojIyBJVFNNQ29yZQojIyAtLS0KIyMgICAgICAgIGZvciAocXcoU2VydmljZUlEIFBhcmVudElEIE5hbWUgVmFsaWRJRCBDb21tZW50KSkgewojICAgICAgICBmb3IgKHF3KFNlcnZpY2VJRCBQYXJlbnRJRCBOYW1lIFZhbGlkSUQgQ29tbWVudCBUeXBlSUQgQ3JpdGljYWxpdHkpKSB7CiMjIC0tLQoKICAgICAgICBAeyAkR2V0UGFyYW17VGlja2V0VHlwZUlEc30gfSA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdUaWNrZXRUeXBlSURzJyApOwogICAgICAgIEB7ICRHZXRQYXJhbXtMYW5ndWFnZUlEfSB9ICAgID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ0xhbmd1YWdlSUQnICk7CgogICAgICAgIGZvciAocXcoU2VydmljZUlEIFBhcmVudElEIE5hbWUgVmFsaWRJRCBDb21tZW50IENyaXRpY2FsaXR5IEN1c3RvbWVyRGVmYXVsdFNlcnZpY2UgRGVzdFF1ZXVlSUQgS2V5d29yZHMpKSB7CiMgRU8gU2VydmljZUNhdGFsb2cKICAgICAgICAgICAgJEdldFBhcmFteyRffSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRfICkgfHwgJyc7CiAgICAgICAgfQoKICAgICAgICBteSAlRXJyb3I7CgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwoKICAgICAgICAjIGdldCBjb21wb3NlZCBjb250ZW50IHR5cGUKICAgICAgICAkR2V0UGFyYW17Q29udGVudFR5cGV9ID0gJ3RleHQvcGxhaW4nOwogICAgICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtDb250ZW50VHlwZX0gPSAndGV4dC9odG1sJzsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSBzdWJqZWN0IGFuZCBib2R5IGZvciBhbGwgbGFuZ3VhZ2VzCiAgICAgICAgZm9yIG15ICRMYW5ndWFnZUlEICggQHsgJEdldFBhcmFte0xhbmd1YWdlSUR9IH0gKSB7CgogICAgICAgICAgICBteSAkRGVzY3JpcHRpb25TaG9ydCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRMYW5ndWFnZUlEIC4gJ19EZXNjcmlwdGlvblNob3J0JyApIHx8ICcnOwogICAgICAgICAgICBteSAkRGVzY3JpcHRpb25Mb25nICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRMYW5ndWFnZUlEIC4gJ19EZXNjcmlwdGlvbkxvbmcnICkgICAgfHwgJyc7CgogICAgICAgICAgICAkR2V0UGFyYW17RGVzY3JpcHRpb25zfS0+eyRMYW5ndWFnZUlEfSA9IHsKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uU2hvcnQgPT4gJERlc2NyaXB0aW9uU2hvcnQsCiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbkxvbmcgID0+ICREZXNjcmlwdGlvbkxvbmcsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSAgICAgID0+ICRHZXRQYXJhbXtDb250ZW50VHlwZX0sCiAgICAgICAgICAgIH07CgogICAgICAgICAgICAjIHNldCBzZXJ2ZXIgZXJyb3IgZmxhZyBpZiBmaWVsZCBpcyBlbXB0eQogICAgICAgICAgICBpZiAoICEkRGVzY3JpcHRpb25TaG9ydCApIHsKICAgICAgICAgICAgICAgICRFcnJvcnsgJExhbmd1YWdlSUQgLiAnX0Rlc2NyaXB0aW9uU2hvcnRTZXJ2ZXJFcnJvcicgfSA9ICJTZXJ2ZXJFcnJvciI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgdmFsdWVzCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggQHsgJFNlbGYtPntEeW5hbWljRmllbGRMb29rdXB9IH0pIHsKCiAgICAgICAgICAgICRHZXRQYXJhbXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiMgRU8gU2VydmljZUNhdGFsb2cKCiAgICAgICAgaWYgKCAhJEdldFBhcmFte05hbWV9ICkgewogICAgICAgICAgICAkRXJyb3J7J05hbWVJbnZhbGlkJ30gPSAnU2VydmVyRXJyb3InOwogICAgICAgIH0KCiAgICAgICAgbXkgJFNlcnZpY2VOYW1lID0gJyc7CiAgICAgICAgaWYgKCAkR2V0UGFyYW17UGFyZW50SUR9ICkgewogICAgICAgICAgICBteSAkUHJlZml4ID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VMb29rdXAoCiAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJEdldFBhcmFte1BhcmVudElEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkUHJlZml4KSB7CiAgICAgICAgICAgICAgICAkU2VydmljZU5hbWUgPSAkUHJlZml4IC4gIjo6IjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkU2VydmljZU5hbWUgLj0gJEdldFBhcmFte05hbWV9OwoKICAgICAgICBpZiAoIGxlbmd0aCAkU2VydmljZU5hbWUgPiAyMDAgKSB7CiAgICAgICAgICAgICRFcnJvcnsnTmFtZUludmFsaWQnfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICRFcnJvcntMb25nTmFtZX0gICAgICA9IDE7CiAgICAgICAgfQoKICAgICAgICBpZiAoICElRXJyb3IgKSB7CgogICAgICAgICAgICBteSAkTG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICAgICAgICAgIyBzYXZlIHRvIGRhdGFiYXNlCiAgICAgICAgICAgIGlmICggJEdldFBhcmFte1NlcnZpY2VJRH0gZXEgJ05FVycgKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17U2VydmljZUlEfSA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlQWRkKAogICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXtTZXJ2aWNlSUR9ICkgewogICAgICAgICAgICAgICAgICAgICRFcnJvcntNZXNzYWdlfSA9ICRMb2dPYmplY3QtPkdldExvZ0VudHJ5KAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIFdoYXQgPT4gJ01lc3NhZ2UnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlVXBkYXRlKAogICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgICAgICRFcnJvcntNZXNzYWdlfSA9ICRMb2dPYmplY3QtPkdldExvZ0VudHJ5KAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIFdoYXQgPT4gJ01lc3NhZ2UnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgICAgICMgc2V0IGN1c3RvbWVyIHVzZXIgc2VydmljZSBtZW1iZXIKICAgICAgICAgICAgJFNlcnZpY2VPYmplY3QtPkN1c3RvbWVyVXNlclNlcnZpY2VNZW1iZXJBZGQoCiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJMb2dpbiA9PiAnPERFRkFVTFQ+JywKICAgICAgICAgICAgICAgIFNlcnZpY2VJRCAgICAgICAgID0+ICRHZXRQYXJhbXtTZXJ2aWNlSUR9LAogICAgICAgICAgICAgICAgQWN0aXZlICAgICAgICAgICAgPT4gJEdldFBhcmFte0N1c3RvbWVyRGVmYXVsdFNlcnZpY2V9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwojIEVPIFNlcnZpY2VDYXRhbG9nCgogICAgICAgICAgICBpZiAoICElRXJyb3IgKSB7CgogICAgICAgICAgICAgICAgIyB1cGRhdGUgcHJlZmVyZW5jZXMKICAgICAgICAgICAgICAgIG15ICVTZXJ2aWNlRGF0YSA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlR2V0KAogICAgICAgICAgICAgICAgICAgIFNlcnZpY2VJRCA9PiAkR2V0UGFyYW17U2VydmljZUlEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15ICVQcmVmZXJlbmNlcyA9ICgpOwogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NlcnZpY2VQcmVmZXJlbmNlcycpICkgewogICAgICAgICAgICAgICAgICAgICVQcmVmZXJlbmNlcyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnU2VydmljZVByZWZlcmVuY2VzJykgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbSAoIHNvcnQga2V5cyAlUHJlZmVyZW5jZXMgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJE1vZHVsZSA9ICRQcmVmZXJlbmNlc3skSXRlbX0tPntNb2R1bGV9CiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6U2VydmljZVByZWZlcmVuY2VzOjpHZW5lcmljJzsKCiAgICAgICAgICAgICAgICAgICAgIyBsb2FkIG1vZHVsZQogICAgICAgICAgICAgICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoJE1vZHVsZSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAkT2JqZWN0ID0gJE1vZHVsZS0+bmV3KAogICAgICAgICAgICAgICAgICAgICAgICAleyRTZWxmfSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiAkUHJlZmVyZW5jZXN7JEl0ZW19LAogICAgICAgICAgICAgICAgICAgICAgICBEZWJ1ZyAgICAgID0+ICRTZWxmLT57RGVidWd9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbXkgJE5vdGU7CiAgICAgICAgICAgICAgICAgICAgbXkgQFBhcmFtcyA9ICRPYmplY3QtPlBhcmFtKCBTZXJ2aWNlRGF0YSA9PiBcJVNlcnZpY2VEYXRhICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKEBQYXJhbXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUdldFBhcmFtID0gKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkUGFyYW1JdGVtIChAUGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSBAQXJyYXkgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkUGFyYW1JdGVtLT57TmFtZX0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFBhcmFtSXRlbS0+e05hbWV9IH0gPSBcQEFycmF5OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICEkT2JqZWN0LT5SdW4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0UGFyYW0gICAgPT4gXCVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlRGF0YSA9PiBcJVNlcnZpY2VEYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROb3RlIC49ICRMYXlvdXRPYmplY3QtPk5vdGlmeSggSW5mbyA9PiAkT2JqZWN0LT5FcnJvcigpICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwoKICAgICAgICAgICAgICAgICMgZ2V0IGFsbCBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc0RhdGEoCiAgICAgICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBHZXQgYWxsIGV4aXN0aW5nIGF0dGFjaG1lbnRzLgogICAgICAgICAgICAgICAgbXkgQEV4aXN0aW5nQXR0YWNobWVudHMgPSAkU2VydmljZU9iamVjdC0+QXR0YWNobWVudEluZGV4KAogICAgICAgICAgICAgICAgICAgIFNlcnZpY2VJRCAgPT4gJEdldFBhcmFte1NlcnZpY2VJRH0sCiAgICAgICAgICAgICAgICAgICAgU2hvd0lubGluZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJExhbmd1YWdlSUQgKCBAeyAkR2V0UGFyYW17TGFuZ3VhZ2VJRH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAjIExvb2t1cCBvbGQgaW5saW5lIGF0dGFjaG1lbnRzIChpbml0aWFsbHkgbG9hZGVkIHRvIEFkbWluU2VydmljZS5wbSBzY3JlZW4pCiAgICAgICAgICAgICAgICAgICAgIyBhbmQgcHVzaCB0byBBdHRhY2htZW50cyBhcnJheSBpZiB0aGV5IHN0aWxsIGV4aXN0IGluIHRoZSBmb3JtLgogICAgICAgICAgICAgICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChARXhpc3RpbmdBdHRhY2htZW50cykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17RGVzY3JpcHRpb25zfS0+eyRMYW5ndWFnZUlEfS0+e0Rlc2NyaXB0aW9uTG9uZ30KICAgICAgICAgICAgICAgICAgICAgICAgICAgID1+IG17IEFjdGlvbj1BZ2VudElUU01TZXJ2aWNlWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O1NlcnZpY2VJRD0kR2V0UGFyYW17U2VydmljZUlEfTtGaWxlSUQ9JEF0dGFjaG1lbnQtPntGaWxlSUR9IH1tc3gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXQgdGhlIGV4aXN0aW5nIGlubGluZSBhdHRhY2htZW50IGRhdGEuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAlRmlsZSA9ICRTZXJ2aWNlT2JqZWN0LT5BdHRhY2htZW50R2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2VJRCA9PiAkR2V0UGFyYW17U2VydmljZUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlSUQgICAgPT4gJEF0dGFjaG1lbnQtPntGaWxlSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQEF0dGFjaG1lbnRzLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpbGV7Q29udGVudH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJEZpbGV7Q29udGVudFR5cGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxle0ZpbGVuYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlc2l6ZSAgICA9PiAkRmlsZXtGaWxlc2l6ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzcG9zaXRpb24gPT4gJ2lubGluZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZUlEICAgICAgPT4gJEF0dGFjaG1lbnQtPntGaWxlSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIEJ1aWxkIGEgbG9va3VwIGhhc2ggb2YgdGhlIG5ldyBhdHRhY2htZW50cy4KICAgICAgICAgICAgICAgIG15ICVOZXdBdHRhY2htZW50OwogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICAgICAgICAgIyBUaGUga2V5IGlzIHRoZSBmaWxlbmFtZSArIGZpbGVzaXplICsgY29udGVudCB0eXBlLgogICAgICAgICAgICAgICAgICAgIG15ICRLZXkgPSAkQXR0YWNobWVudC0+e0ZpbGVuYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAuICRBdHRhY2htZW50LT57RmlsZXNpemV9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CgogICAgICAgICAgICAgICAgICAgICMgQXBwZW5kIGNvbnRlbnQgaWQgaWYgYXZhaWxhYmxlIChmb3IgbmV3IGlubGluZSBpbWFnZXMpLgogICAgICAgICAgICAgICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50SUR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkS2V5IC49ICRBdHRhY2htZW50LT57Q29udGVudElEfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgU3RvcmUgYWxsIG9mIHRoZSBuZXcgYXR0YWNobWVudCBkYXRhLgogICAgICAgICAgICAgICAgICAgICROZXdBdHRhY2htZW50eyRLZXl9ID0gJEF0dGFjaG1lbnQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBDaGVjayB0aGUgZXhpc3RpbmcgYXR0YWNobWVudHMuCiAgICAgICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChARXhpc3RpbmdBdHRhY2htZW50cykgewoKICAgICAgICAgICAgICAgICMgVGhlIGtleSBpcyB0aGUgZmlsZW5hbWUgKyBmaWxlc2l6ZXJhdyArIGNvbnRlbnQgdHlwZSAobm8gY29udGVudCBpZCwgYXMgZXhpc3RpbmcgYXR0YWNobWVudHMgZG9uJ3QgaGF2ZSBpdCkuCiAgICAgICAgICAgICAgICAgICAgbXkgJEtleSA9ICRBdHRhY2htZW50LT57RmlsZW5hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnQtPntGaWxlc2l6ZVJhd30KICAgICAgICAgICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfTsKCiAgICAgICAgICAgICAgICAgICAgIyBBdHRhY2htZW50IGlzIGFscmVhZHkgZXhpc3RpbmcsIHdlIGNhbiBkZWxldGUgaXQgZnJvbSB0aGUgbmV3IGF0dGFjaG1lbnQgaGFzaC4KICAgICAgICAgICAgICAgICAgICBpZiAoICROZXdBdHRhY2htZW50eyRLZXl9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJE5ld0F0dGFjaG1lbnR7JEtleX07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIEV4aXN0aW5nIGF0dGFjaG1lbnQgaXMgbm8gbG9uZ2VyIGluIG5ldyBhdHRhY2htZW50cyBoYXNoLgogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBEZWxldGUgdGhlIGV4aXN0aW5nIGF0dGFjaG1lbnQuCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICREZWxldGVTdWNjZXNzZnVsID0gJFNlcnZpY2VPYmplY3QtPkF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJEdldFBhcmFte1NlcnZpY2VJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlSUQgICAgPT4gJEF0dGFjaG1lbnQtPntGaWxlSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJERlbGV0ZVN1Y2Nlc3NmdWwgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQEF0dGFjaG1lbnRzKSB7CiAgICAgICAgICAgICAgICAgICAgIyBVcGxvYWQgYXR0YWNobWVudHMuCiAgICAgICAgICAgICAgICAgICAgbXkgJEZpbGVJRCA9ICRTZXJ2aWNlT2JqZWN0LT5BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgICA9PiAkR2V0UGFyYW17U2VydmljZUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZU5hbWUgICAgPT4gJEF0dGFjaG1lbnQtPntGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnRTaXplID0+ICRBdHRhY2htZW50LT57RmlsZXNpemV9LAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEF0dGFjaG1lbnQtPntDb250ZW50fSwKICAgICAgICAgICAgICAgICAgICAgICAgSW5saW5lICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggISRGaWxlSUQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIFJld3JpdGUgdGhlIFVSTHMgb2YgdGhlIGlubGluZSBpbWFnZXMgZm9yIHRoZSB1cGxvYWRlZCBwaWN0dXJlcy4KICAgICAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlSW5saW5lQXR0YWNobWVudFVSTFVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiAkQXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgRm9ybUlEICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2VJRCAgPT4gJEdldFBhcmFte1NlcnZpY2VJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVJRCAgICAgPT4gJEZpbGVJRCwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgdGhlIGlubGluZSBpbWFnZSBVUkxzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICJmb3IgU2VydmljZUlEICckR2V0UGFyYW17U2VydmljZUlEfSchIiwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURSZW1vdmUoIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0gKTsKCiAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkTG9va3VwfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICRWYWx1ZVNldCA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkR2V0UGFyYW17U2VydmljZUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRHZXRQYXJhbXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFZhbHVlU2V0ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VuYWJsZSB0byBzZXQgdmFsdWUgZm9yIGR5bmFtaWMgZmllbGQgJXMhJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBDcmVhdGUgQWNsIGlmIGNvbmZpZyBpcyBlbmFibGVkCiAgICAgICAgICAgICAgICAjIFdlIGNyZWF0ZSBvbmUgQWNsIHBlciBUaWNrZXQtVHlwZQogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NlcnZpY2VDYXRhbG9nOjpDcmVhdGVUeXBlU2VydmljZVJlbGF0ZWRBY2xzJykgKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRUaWNrZXRUeXBlICggQHsgJEdldFBhcmFte1RpY2tldFR5cGVJRHN9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFNlcnZpY2VPYmplY3QtPlVwZGF0ZVR5cFNlcnZpY2VBQ0woCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRUeXBlSUQgPT4gJFRpY2tldFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgICAgPT4gJEdldFBhcmFte1NlcnZpY2VJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlVmFsaWQgPT4gJEdldFBhcmFte1ZhbGlkSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQojIEVPIFNlcnZpY2VDYXRhbG9nCgogICAgICAgICAgICAgICAgIyBpZiB0aGUgdXNlciB3b3VsZCBsaWtlIHRvIGNvbnRpbnVlIGVkaXRpbmcgdGhlIHNlcnZpY2UsIGp1c3QgcmVkaXJlY3QgdG8gdGhlIGVkaXQgc2NyZWVuCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29udGludWVBZnRlclNhdmUnICkKICAgICAgICAgICAgICAgICAgICAmJiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb250aW51ZUFmdGVyU2F2ZScgKSBlcSAnMScgKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2VydmljZUlEJyApIHx8ICcnOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3ViYWN0aW9uPVNlcnZpY2VFZGl0O1NlcnZpY2VJRD0kSUQiCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSByZXR1cm4gdG8gb3ZlcnZpZXcKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNvbWV0aGluZyB3ZW50IHdyb25nCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwogICAgICAgICRPdXRwdXQgLj0gJEVycm9ye01lc3NhZ2V9CiAgICAgICAgICAgID8gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ0Vycm9yJywKICAgICAgICAgICAgICAgIEluZm8gICAgID0+ICRFcnJvcntNZXNzYWdlfSwKICAgICAgICAgICAgKQogICAgICAgICAgICA6ICcnOwoKICAgICAgICAjIGh0bWwgb3V0cHV0CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2tOZXcoCiAgICAgICAgICAgICVFcnJvciwKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwogICAgICAgIHJldHVybiAkT3V0cHV0OwoKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHNlcnZpY2Ugb3ZlcnZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2UgewoKICAgICAgICAjIG91dHB1dCBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgY2hlY2sgaWYgc2VydmljZSBpcyBlbmFibGVkIHRvIHVzZSBpdCBoZXJlCiAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2UnKSApIHsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAiUGxlYXNlIGFjdGl2YXRlICVzIGZpcnN0ISIsICJTZXJ2aWNlIiApLAogICAgICAgICAgICAgICAgTGluayAgICAgPT4KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAgICAgLiAnQWN0aW9uPUFkbWluU3lzdGVtQ29uZmlndXJhdGlvbjtTdWJhY3Rpb249VmlldztTZXR0aW5nPVRpY2tldCUzQSUzQVNlcnZpY2U7JywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3JywKICAgICAgICAgICAgRGF0YSA9PiB7ICVQYXJhbSwgfSwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnQWN0aW9uTGlzdCcgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnQWN0aW9uQWRkJyApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdJbmNsdWRlSW52YWxpZCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSW5jbHVkZUludmFsaWQgICAgICAgID0+ICRTZWxmLT57SW5jbHVkZUludmFsaWR9LAogICAgICAgICAgICAgICAgSW5jbHVkZUludmFsaWRDaGVja2VkID0+ICRTZWxmLT57SW5jbHVkZUludmFsaWR9ID8gJ2NoZWNrZWQnIDogJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnRmlsdGVyJyApOwojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdJbXBvcnRFeHBvcnRXaWRnZXQnICk7CiMgRU8gU2VydmljZUNhdGFsb2cKCiAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TGlzdCcsCiAgICAgICAgICAgIERhdGEgPT4geyAlUGFyYW0sIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2VydmljZSBsaXN0CiAgICAgICAgbXkgJFNlcnZpY2VMaXN0ID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VMaXN0R2V0KAogICAgICAgICAgICBWYWxpZCAgPT4gJFNlbGYtPntJbmNsdWRlSW52YWxpZH0gPyAwIDogMSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGlmIHRoZXJlIGFyZSBhbnkgc2VydmljZXMgZGVmaW5lZCwgdGhleSBhcmUgc2hvd24KICAgICAgICBpZiAoIEB7JFNlcnZpY2VMaXN0fSApIHsKCiAgICAgICAgICAgICMgZ2V0IHZhbGlkIGxpc3QKICAgICAgICAgICAgbXkgJVZhbGlkTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExpc3QoKTsKCiAgICAgICAgICAgICMgc29ydCB0aGUgc2VydmljZSBsaXN0IGJ5IGxvbmcgc2VydmljZSBuYW1lCiAgICAgICAgICAgIEB7JFNlcnZpY2VMaXN0fSA9IHNvcnQgeyAkYS0+e05hbWV9IC4gJzo6JyBjbXAgJGItPntOYW1lfSAuICc6OicgfSBAeyRTZXJ2aWNlTGlzdH07CgogICAgICAgICAgICBmb3IgbXkgJFNlcnZpY2VEYXRhICggQHskU2VydmljZUxpc3R9ICkgewoKICAgICAgICAgICAgICAgICMgb3V0cHV0IHJvdwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdMaXN0Um93JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXskU2VydmljZURhdGF9LAogICAgICAgICAgICAgICAgICAgICAgICBWYWxpZCA9PiAkVmFsaWRMaXN0eyAkU2VydmljZURhdGEtPntWYWxpZElEfSB9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2UgYSBubyBkYXRhIGZvdW5kIG1zZyBpcyBkaXNwbGF5ZWQKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdOb0RhdGFGb3VuZE1zZycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pblNlcnZpY2UnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgX01hc2tOZXcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyk7CiAgICBteSAlU2VydmljZURhdGE7CgogICAgIyBnZXQgcGFyYW1zCiAgICAkU2VydmljZURhdGF7U2VydmljZUlEfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICJTZXJ2aWNlSUQiICk7CiAgICBpZiAoICRTZXJ2aWNlRGF0YXtTZXJ2aWNlSUR9IG5lICdORVcnICkgewogICAgICAgICVTZXJ2aWNlRGF0YSA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlR2V0KAogICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJFNlcnZpY2VEYXRhe1NlcnZpY2VJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgJFBhcmFte0Rlc2NyaXB0aW9uc30gPSAkU2VydmljZURhdGF7RGVzY3JpcHRpb25zfTsKIyBFTyBTZXJ2aWNlQ2F0YWxvZwogICAgfSAKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgICRQYXJhbXtGb3JtSUR9ID0gJFNlbGYtPntGb3JtSUR9OwoKICAgIG15ICRIVE1MVXRpbHNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyk7CiMgRU8gU2VydmljZUNhdGFsb2cKCiAgICAjIG91dHB1dCBvdmVydmlldwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXcnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBTZXJ2aWNlSUQgICA9PiAkU2VydmljZURhdGF7U2VydmljZUlEfSwKICAgICAgICAgICAgU2VydmljZU5hbWUgPT4gJFNlcnZpY2VEYXRhe05hbWV9LAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgIyBvdXRwdXQgc2VydmljZSBvcHRpb24gcmVmZXJlbmNlCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTZXJ2aWNlUmVmZXJlbmNlJywKICAgICk7CiMgRU8gU2VydmljZUNhdGFsb2cKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnQWN0aW9uTGlzdCcgKTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdBY3Rpb25PdmVydmlldycgKTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBsaXN0IHR5cGUKICAgIG15ICRMaXN0VHlwZSA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKTsKCiAgICAjIGdlbmVyYXRlIFBhcmVudE9wdGlvblN0cmcKICAgIG15ICRLZWVwQ2hpbGRyZW4gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U2VydmljZTo6S2VlcENoaWxkcmVuJykgLy8gMDsKICAgIG15ICVTZXJ2aWNlTGlzdCAgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUxpc3QoCiAgICAgICAgVmFsaWQgICAgICAgID0+ICEkS2VlcENoaWxkcmVuLAogICAgICAgIEtlZXBDaGlsZHJlbiA9PiAkS2VlcENoaWxkcmVuLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgJFNlcnZpY2VEYXRhe1BhcmVudE9wdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgICAgPT4gXCVTZXJ2aWNlTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnUGFyZW50SUQnLAogICAgICAgIFNlbGVjdGVkSUQgICAgID0+ICRQYXJhbXtQYXJlbnRJRH0gfHwgJFNlcnZpY2VEYXRhe1BhcmVudElEfSwKICAgICAgICBQb3NzaWJsZU5vbmUgICA9PiAxLAogICAgICAgIFRyZWVWaWV3ICAgICAgID0+ICggJExpc3RUeXBlIGVxICd0cmVlJyApID8gMSA6IDAsCiAgICAgICAgRGlzYWJsZWRCcmFuY2ggPT4gJFNlcnZpY2VEYXRhe05hbWV9LAogICAgICAgIFRyYW5zbGF0aW9uICAgID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKIyMgLS0tCiMjIElUU01Db3JlCiMjIC0tLQojICAgICMgZ2VuZXJhdGUgVHlwZU9wdGlvblN0cmcKIyAgICBteSAkVHlwZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiMgICAgICAgIENsYXNzID0+ICdJVFNNOjpTZXJ2aWNlOjpUeXBlJywKIyAgICApOwojCiMgICAgIyBidWlsZCB0aGUgdHlwZSBkcm9wZG93bgojICAgICRTZXJ2aWNlRGF0YXtUeXBlT3B0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKIyAgICAgICAgRGF0YSAgICAgICA9PiAkVHlwZUxpc3QsCiMgICAgICAgIE5hbWUgICAgICAgPT4gJ1R5cGVJRCcsCiMgICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1R5cGVJRH0gfHwgJFNlcnZpY2VEYXRhe1R5cGVJRH0sCiMgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiMgICAgKTsKCiAgICBteSAlVGlja2V0VHlwZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpLT5UeXBlTGlzdCgKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIEJ1aWxkIHRpY2tldCB0eXBlIHNlbGVjdGlvbi4KICAgICRTZXJ2aWNlRGF0YXtUaWNrZXRUeXBlT3B0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVUaWNrZXRUeXBlTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ1RpY2tldFR5cGVJRHMnLAogICAgICAgIE11bHRpcGxlICAgICA9PiAxLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17VGlja2V0VHlwZUlEc30gfHwgJFNlcnZpY2VEYXRhe1RpY2tldFR5cGVJRHN9LAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBNb3ZlIFRpY2tldCB0byBxdWV1ZQogICAgbXkgJVRpY2tldFF1ZXVlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpLT5HZXRBbGxRdWV1ZXMoCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7CgogICAgIyBCdWlsZCB0aWNrZXQgcXVldWUgc2VsZWN0aW9uLgogICAgJFNlcnZpY2VEYXRhe1RpY2tldFF1ZXVlT3B0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVUaWNrZXRRdWV1ZUxpc3QsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdEZXN0UXVldWVJRCcsCiAgICAgICAgTXVsdGlwbGUgICAgID0+IDAsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgVHJlZVZpZXcgICAgICAgPT4gKCAkTGlzdFR5cGUgZXEgJ3RyZWUnICkgPyAxIDogMCwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0Rlc3RRdWV1ZUlEfSB8fCAkU2VydmljZURhdGF7RGVzdFF1ZXVlSUR9LAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgbXkgJURlZmF1bHRTZXJ2aWNlcyA9ICRTZXJ2aWNlT2JqZWN0LT5DdXN0b21lclVzZXJTZXJ2aWNlTWVtYmVyTGlzdCgKICAgICAgICBDdXN0b21lclVzZXJMb2dpbiA9PiAnPERFRkFVTFQ+JywKICAgICAgICBSZXN1bHQgICAgICAgICAgICA9PiAnSEFTSCcsCiAgICAgICAgRGVmYXVsdFNlcnZpY2VzICAgPT4gMSwKICAgICk7CgogICAgJFNlcnZpY2VEYXRhe0N1c3RvbWVyU2VydmljZUNoZWNrZWR9ID0gJyc7CgogICAgREVGQVVMVFNFUlZJQ0U6CiAgICBmb3IgbXkgJERlZlNlcnZpY2UgKCBrZXlzICVEZWZhdWx0U2VydmljZXMgKSB7CgogICAgICAgIGlmICggJFNlcnZpY2VEYXRhe1NlcnZpY2VJRH0gZXEgJERlZlNlcnZpY2UgKSB7CiAgICAgICAgICAgICRTZXJ2aWNlRGF0YXtDdXN0b21lclNlcnZpY2VDaGVja2VkfSA9ICdjaGVja2VkJzsKICAgICAgICAgICAgbGFzdCBERUZBVUxUU0VSVklDRTsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgcmljaCB0ZXh0IGVkaXRvcgogICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKCiAgICAgICAgIyBzZXQgdXAgcmljaCB0ZXh0IGVkaXRvcgogICAgICAgICRMYXlvdXRPYmplY3QtPlNldFJpY2hUZXh0UGFyYW1ldGVycygKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CiMgRU8gU2VydmljZUNhdGFsb2cKCiAgICAjIGJ1aWxkIHRoZSBjcml0aWNhbGl0eSBkcm9wZG93bgogICAgJFNlcnZpY2VEYXRhe0NyaXRpY2FsaXR5T3B0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+ICRTZWxmLT57Q3JpdGljYWxpdHlMaXN0fSwKICAgICAgICBOYW1lICAgICAgID0+ICdDcml0aWNhbGl0eScsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17Q3JpdGljYWxpdHl9IHx8ICRTZXJ2aWNlRGF0YXtDcml0aWNhbGl0eX0sCiAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CiMgLS0tCgogICAgIyBnZXQgdmFsaWQgbGlzdAogICAgbXkgJVZhbGlkTGlzdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KCk7CiAgICBteSAlVmFsaWRMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJVZhbGlkTGlzdDsKCiAgICAkU2VydmljZURhdGF7VmFsaWRPcHRpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVWYWxpZExpc3QsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVmFsaWRJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkU2VydmljZURhdGF7VmFsaWRJRH0gfHwgJFZhbGlkTGlzdFJldmVyc2V7dmFsaWR9LAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgb3V0cHV0IHNlcnZpY2UgZWRpdAogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnU2VydmljZUVkaXQnLAogICAgICAgIERhdGEgPT4geyAlUGFyYW0sICVTZXJ2aWNlRGF0YSwgfSwKICAgICk7CgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgIyBHZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdC4KICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwogICAgbXkgJFBhcmFtT2JqZWN0ICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZExvb2t1cH0gfSApIHsKCiAgICAgICAgbXkgJFZhbHVlR2V0ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRTZXJ2aWNlRGF0YXtTZXJ2aWNlSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgR2V0IEhUTUwgZm9yIGR5bmFtaWMgZmllbGQKICAgICAgICBteSAkRHluYW1pY0ZpZWxkSFRNTCA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5FZGl0RmllbGRSZW5kZXIoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlR2V0LAogICAgICAgICAgICAjIE1hbmRhdG9yeSAgICAgICAgICA9PiAwLAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRQYXJhbU9iamVjdCwKCiAgICAgICAgICAgICMgU2VydmVyIGVycm9yLCBpZiBhbnkKICAgICAgICAgICAgIyAleyAkUGFyYW17RXJyb3JzfS0+eyAkRW50cnktPlswXSB9IH0sCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRIVE1MKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJER5bmFtaWNGaWVsZC0+e05hbWV9LAogICAgICAgICAgICAgICAgTGFiZWwgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntMYWJlbH0sCiAgICAgICAgICAgICAgICBGaWVsZCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0ZpZWxkfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IG5hbWVzIG9mIGxhbmd1YWdlcyBpbiBFbmdsaXNoCiAgICBteSAlRGVmYXVsdFVzZWRMYW5ndWFnZXMgPSAleyAkQ29uZmlnT2JqZWN0LT5HZXQoJ0RlZmF1bHRVc2VkTGFuZ3VhZ2VzJykgfHwge30gfTsKCiAgICAjIGdldCBuYXRpdmUgbmFtZXMgb2YgbGFuZ3VhZ2VzCiAgICBteSAlRGVmYXVsdFVzZWRMYW5ndWFnZXNOYXRpdmUgPSAleyAkQ29uZmlnT2JqZWN0LT5HZXQoJ0RlZmF1bHRVc2VkTGFuZ3VhZ2VzTmF0aXZlJykgfHwge30gfTsgICAgCgogICAgbXkgJUxhbmd1YWdlczsKICAgIExBTkdVQUdFSUQ6CiAgICBmb3IgbXkgJExhbmd1YWdlSUQgKCBzb3J0IGtleXMgJURlZmF1bHRVc2VkTGFuZ3VhZ2VzICkgewoKICAgICAgICAjIG5leHQgbGFuZ3VhZ2UgaWYgdGhlcmUgaXMgbm90IHNldCBhbnkgbmFtZSBmb3IgY3VycmVudCBsYW5ndWFnZQogICAgICAgIGlmICggISREZWZhdWx0VXNlZExhbmd1YWdlc3skTGFuZ3VhZ2VJRH0gJiYgISREZWZhdWx0VXNlZExhbmd1YWdlc05hdGl2ZXskTGFuZ3VhZ2VJRH0gKSB7CiAgICAgICAgICAgIG5leHQgTEFOR1VBR0VJRDsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHRleHRzIGluIG5hdGl2ZSBhbmQgZGVmYXVsdCBsYW5ndWFnZQogICAgICAgIG15ICRUZXh0ICAgICAgICA9ICREZWZhdWx0VXNlZExhbmd1YWdlc05hdGl2ZXskTGFuZ3VhZ2VJRH0gfHwgJyc7CiAgICAgICAgbXkgJFRleHRFbmdsaXNoID0gJERlZmF1bHRVc2VkTGFuZ3VhZ2VzeyRMYW5ndWFnZUlEfSAgICAgICB8fCAnJzsKCiAgICAgICAgIyB0cmFuc2xhdGUgdG8gY3VycmVudCB1c2VyJ3MgbGFuZ3VhZ2UKICAgICAgICBteSAkVGV4dFRyYW5zbGF0ZWQgPQogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVGV4dEVuZ2xpc2gpOwoKICAgICAgICBpZiAoICRUZXh0VHJhbnNsYXRlZCAmJiAkVGV4dFRyYW5zbGF0ZWQgbmUgJFRleHQgKSB7CiAgICAgICAgICAgICRUZXh0IC49ICcgLSAnIC4gJFRleHRUcmFuc2xhdGVkOwogICAgICAgIH0KCiAgICAgICAgIyBuZXh0IGxhbmd1YWdlIGlmIHRoZXJlIGlzIG5vdCBzZXQgRW5nbGlzaCBub3IgbmF0aXZlIG5hbWUgb2YgbGFuZ3VhZ2UuCiAgICAgICAgbmV4dCBMQU5HVUFHRUlEIGlmICEkVGV4dDsKCiAgICAgICAgJExhbmd1YWdlc3skTGFuZ3VhZ2VJRH0gPSAkVGV4dDsKICAgIH0KCiAgICAjIGNvcHkgb3JpZ2luYWwgbGlzdCBvZiBsYW5ndWFnZXMgd2hpY2ggd2lsbCBiZSB1c2VkIGZvciByZWJ1aWxkaW5nIGxhbmd1YWdlIHNlbGVjdGlvbgogICAgbXkgJU9yaWdpbmFsRGVmYXVsdFVzZWRMYW5ndWFnZXMgPSAlTGFuZ3VhZ2VzOwoKICAgICMgZ2V0IGxhbmd1YWdlIGlkcyBmcm9tIERlc2NyaXB0aW9ucyBwYXJhbWV0ZXIsIHVzZSBFbmdsaXNoIGlmIG5vIERlc2NyaXB0aW9ucyBpcyBnaXZlbgogICAgIyBtYWtlIHN1cmUgRW5nbGlzaCBpcyB0aGUgZmlyc3QgbGFuZ3VhZ2UKICAgIG15IEBMYW5ndWFnZUlEczsKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtEZXNjcmlwdGlvbnN9ICkgKSB7CiAgICAgICAgaWYgKCAkUGFyYW17RGVzY3JpcHRpb25zfS0+e2VufSApIHsKICAgICAgICAgICAgcHVzaCBATGFuZ3VhZ2VJRHMsICdlbic7CiAgICAgICAgfQogICAgICAgIExBTkdVQUdFSUQ6CiAgICAgICAgZm9yIG15ICRMYW5ndWFnZUlEICggc29ydCBrZXlzICV7ICRQYXJhbXtEZXNjcmlwdGlvbnN9IH0gKSB7CiAgICAgICAgICAgIG5leHQgTEFOR1VBR0VJRCBpZiAkTGFuZ3VhZ2VJRCBlcSAnZW4nOwogICAgICAgICAgICBwdXNoIEBMYW5ndWFnZUlEcywgJExhbmd1YWdlSUQ7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkRGVmYXVsdFVzZWRMYW5ndWFnZXN7ZW59ICkgewogICAgICAgIHB1c2ggQExhbmd1YWdlSURzLCAnZW4nOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcHVzaCBATGFuZ3VhZ2VJRHMsICggc29ydCBrZXlzICVEZWZhdWx0VXNlZExhbmd1YWdlcyApWzBdOwogICAgfQoKICAgIGZvciBteSAkTGFuZ3VhZ2VJRCAoQExhbmd1YWdlSURzKSB7CiAgICAgICAgIyBmb3JtYXQgdGhlIGNvbnRlbnQgYWNjb3JkaW5nIHRvIHRoZSBjb250ZW50IHR5cGUKICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewoKICAgICAgICAgICAgIyBtYWtlIHN1cmUgRGVzY3JpcHRpb25Mb25nIGlzIHJpY2ggdGV4dCAoaWYgRGVzY3JpcHRpb25Mb25nIGlzIGJhc2VkIG9uIGNvbmZpZykKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJFBhcmFte0Rlc2NyaXB0aW9uc30tPnskTGFuZ3VhZ2VJRH0tPntDb250ZW50VHlwZX0KICAgICAgICAgICAgICAgICYmICRQYXJhbXtEZXNjcmlwdGlvbnN9LT57JExhbmd1YWdlSUR9LT57Q29udGVudFR5cGV9ID1+IG17dGV4dFwvcGxhaW59eG1zaQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkUGFyYW17RGVzY3JpcHRpb25zfS0+eyRMYW5ndWFnZUlEfS0+e0Rlc2NyaXB0aW9uTG9uZ30gPSAkSFRNTFV0aWxzT2JqZWN0LT5Ub0hUTUwoCiAgICAgICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXtEZXNjcmlwdGlvbnN9LT57JExhbmd1YWdlSUR9LT57RGVzY3JpcHRpb25Mb25nfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHJlZm9ybWF0IGZyb20gSFRNTCB0byBwbGFpbgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkUGFyYW17RGVzY3JpcHRpb25zfS0+eyRMYW5ndWFnZUlEfS0+e0NvbnRlbnRUeXBlfQogICAgICAgICAgICAgICAgJiYgJFBhcmFte0Rlc2NyaXB0aW9uc30tPnskTGFuZ3VhZ2VJRH0tPntDb250ZW50VHlwZX0gPX4gbXt0ZXh0XC9odG1sfXhtc2kKICAgICAgICAgICAgICAgICYmICRQYXJhbXtEZXNjcmlwdGlvbnN9LT57JExhbmd1YWdlSUR9LT57RGVzY3JpcHRpb25Mb25nfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkUGFyYW17RGVzY3JpcHRpb25zfS0+eyRMYW5ndWFnZUlEfS0+e0Rlc2NyaXB0aW9uTG9uZ30gPSAkSFRNTFV0aWxzT2JqZWN0LT5Ub0FzY2lpKAogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkUGFyYW17RGVzY3JpcHRpb25zfS0+eyRMYW5ndWFnZUlEfS0+e0Rlc2NyaXB0aW9uTG9uZ30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNob3cgdGhlIGRlc2NyaXB0aW9ucyBmb3IgdGhpcyBsYW5ndWFnZQogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTZXJ2aWNlTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uU2hvcnQgICAgICAgICAgICA9PiAkUGFyYW17RGVzY3JpcHRpb25zfS0+eyRMYW5ndWFnZUlEfS0+e0Rlc2NyaXB0aW9uU2hvcnR9IHx8ICcnLAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb25Mb25nICAgICAgICAgICAgID0+ICRQYXJhbXtEZXNjcmlwdGlvbnN9LT57JExhbmd1YWdlSUR9LT57RGVzY3JpcHRpb25Mb25nfSAgfHwgJycsCiAgICAgICAgICAgICAgICBMYW5ndWFnZUlEICAgICAgICAgICAgICAgICAgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgICAgICBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgPT4gJExhbmd1YWdlc3skTGFuZ3VhZ2VJRH0sCiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvblNob3J0U2VydmVyRXJyb3IgPT4gJFBhcmFteyAkTGFuZ3VhZ2VJRCAuICdfRGVzY3JpcHRpb25TaG9ydFNlcnZlckVycm9yJyB9IHx8ICcnCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NlcnZpY2VMYW5ndWFnZVJlbW92ZUJ1dHRvbicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiAkTGFuZ3VhZ2VJRCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSBsYW5ndWFnZSBmcm9tIGRyb3AtZG93biBsaXN0IGJlY2F1c2UgaXQgaXMgYWxyZWFkeSBzaG93bgogICAgICAgIGRlbGV0ZSAkTGFuZ3VhZ2VzeyRMYW5ndWFnZUlEfTsKICAgIH0KCiAgICAkUGFyYW17TGFuZ3VhZ2VTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcJUxhbmd1YWdlcywKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0xhbmd1YWdlJywKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBXNTBwYyBMYW5ndWFnZUFkZCcsCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgSFRNTFF1b3RlICAgID0+IDAsCiAgICApOwoKICAgICRQYXJhbXtMYW5ndWFnZU9yaWdTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcJU9yaWdpbmFsRGVmYXVsdFVzZWRMYW5ndWFnZXMsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdMYW5ndWFnZU9yaWcnLAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAxLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIEhUTUxRdW90ZSAgICA9PiAwLAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdMYW5ndWFnZU9wdGlvbnMnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CiMgRU8gU2VydmljZUNhdGFsb2cKCiAgICAjIHNob3cgZWFjaCBwcmVmZXJlbmNlcyBzZXR0aW5nCiAgICBteSAlUHJlZmVyZW5jZXMgPSAoKTsKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTZXJ2aWNlUHJlZmVyZW5jZXMnKSApIHsKICAgICAgICAlUHJlZmVyZW5jZXMgPSAleyAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NlcnZpY2VQcmVmZXJlbmNlcycpIH07CiAgICB9CiAgICBmb3IgbXkgJEl0ZW0gKCBzb3J0IGtleXMgJVByZWZlcmVuY2VzICkgewogICAgICAgIG15ICRNb2R1bGUgPSAkUHJlZmVyZW5jZXN7JEl0ZW19LT57TW9kdWxlfQogICAgICAgICAgICB8fCAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlNlcnZpY2VQcmVmZXJlbmNlczo6R2VuZXJpYyc7CgogICAgICAgICMgbG9hZCBtb2R1bGUKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCRNb2R1bGUpICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgIH0KICAgICAgICBteSAkT2JqZWN0ID0gJE1vZHVsZS0+bmV3KAogICAgICAgICAgICAleyRTZWxmfSwKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiAkUHJlZmVyZW5jZXN7JEl0ZW19LAogICAgICAgICAgICBEZWJ1ZyAgICAgID0+ICRTZWxmLT57RGVidWd9LAogICAgICAgICk7CiAgICAgICAgbXkgQFBhcmFtcyA9ICRPYmplY3QtPlBhcmFtKCBTZXJ2aWNlRGF0YSA9PiBcJVNlcnZpY2VEYXRhICk7CiAgICAgICAgaWYgKEBQYXJhbXMpIHsKICAgICAgICAgICAgZm9yIG15ICRQYXJhbUl0ZW0gKEBQYXJhbXMpIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4geyAlUGFyYW0sIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIHJlZiggJFBhcmFtSXRlbS0+e0RhdGF9ICkgZXEgJ0hBU0gnCiAgICAgICAgICAgICAgICAgICAgfHwgcmVmKCAkUHJlZmVyZW5jZXN7JEl0ZW19LT57RGF0YX0gKSBlcSAnSEFTSCcKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbXkgJUJ1aWxkU2VsZWN0aW9uUGFyYW1zID0gKAogICAgICAgICAgICAgICAgICAgICAgICAleyAkUHJlZmVyZW5jZXN7JEl0ZW19IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JFBhcmFtSXRlbX0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkQnVpbGRTZWxlY3Rpb25QYXJhbXN7Q2xhc3N9ID0gam9pbiggJyAnLCAkQnVpbGRTZWxlY3Rpb25QYXJhbXN7Q2xhc3N9IC8vICcnLCAnTW9kZXJuaXplJyApOwoKICAgICAgICAgICAgICAgICAgICAkUGFyYW1JdGVtLT57J09wdGlvbid9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICVCdWlsZFNlbGVjdGlvblBhcmFtcywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkUGFyYW1JdGVtLT57QmxvY2t9IHx8ICRQcmVmZXJlbmNlc3skSXRlbX0tPntCbG9ja30gfHwgJ09wdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICV7ICRQcmVmZXJlbmNlc3skSXRlbX0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskUGFyYW1JdGVtfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluU2VydmljZScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0KICAgICk7Cn0KCjE7Cg==</File>
        <File Location="Custom/Kernel/Modules/AdminSLA.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBlNDRjMThhZWE5YWJjMTI1ZmRkZjljZWVlZDIwNGRiNGZhYjI5MGUwIC0gS2VybmVsL01vZHVsZXMvQWRtaW5TTEEucG0KIyAtLQojICRvcmlnaW46IG90b2JvIC0gZTQ0YzE4YWVhOWFiYzEyNWZkZGY5Y2VlZWQyMDRkYjRmYWIyOTBlMCAtIEtlcm5lbC9Nb2R1bGVzL0FkbWluU0xBLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZG1pblNMQTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBzZXQgcHJlZiBmb3IgY29sdW1ucyBrZXkKICAgICRTZWxmLT57UHJlZktleUluY2x1ZGVJbnZhbGlkfSA9ICdJbmNsdWRlSW52YWxpZCcgLiAnLScgLiAkU2VsZi0+e0FjdGlvbn07CgogICAgbXkgJVByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+R2V0UHJlZmVyZW5jZXMoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgJFNlbGYtPntJbmNsdWRlSW52YWxpZH0gPSAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUluY2x1ZGVJbnZhbGlkfSB9OwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkU0xBT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNMQScpOwogICAgbXkgJUVycm9yICAgICAgICA9ICgpOwoKICAgICRQYXJhbXtJbmNsdWRlSW52YWxpZH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnSW5jbHVkZUludmFsaWQnICk7CgogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtJbmNsdWRlSW52YWxpZH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAkU2VsZi0+e1ByZWZLZXlJbmNsdWRlSW52YWxpZH0sCiAgICAgICAgICAgIFZhbHVlICA9PiAkUGFyYW17SW5jbHVkZUludmFsaWR9LAogICAgICAgICk7CgogICAgICAgICRTZWxmLT57SW5jbHVkZUludmFsaWR9ID0gJFBhcmFte0luY2x1ZGVJbnZhbGlkfTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHNsYSBlZGl0CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU0xBRWRpdCcgKSB7CgogICAgICAgICMgaGVhZGVyCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGh0bWwgb3V0cHV0CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2tOZXcoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgU3ViYWN0aW9uID0+ICRTZWxmLT57U3ViYWN0aW9ufSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc2xhIHNhdmUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTTEFTYXZlJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgIyBnZXQgcGFyYW1zCiAgICAgICAgbXkgJUdldFBhcmFtOwogICAgICAgIGZvciBteSAkUGFyYW0gKAojIC0tLQojIElUU01Db3JlCiMgLS0tCiMgICAgICAgICAgICBxdyhTTEFJRCBOYW1lIENhbGVuZGFyIEZpcnN0UmVzcG9uc2VUaW1lIEZpcnN0UmVzcG9uc2VOb3RpZnkgU29sdXRpb25UaW1lIFNvbHV0aW9uTm90aWZ5IFVwZGF0ZVRpbWUgVXBkYXRlTm90aWZ5IFZhbGlkSUQgQ29tbWVudCkKICAgICAgICAgICAgcXcoU0xBSUQgTmFtZSBDYWxlbmRhciBGaXJzdFJlc3BvbnNlVGltZSBGaXJzdFJlc3BvbnNlTm90aWZ5IFNvbHV0aW9uVGltZSBTb2x1dGlvbk5vdGlmeSBVcGRhdGVUaW1lIFVwZGF0ZU5vdGlmeSBWYWxpZElEIENvbW1lbnQgVHlwZUlEIE1pblRpbWVCZXR3ZWVuSW5jaWRlbnRzKQojIC0tLQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbSApIHx8ICcnOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgICAgICAlRXJyb3IgPSAoKTsKICAgICAgICBpZiAoICEkR2V0UGFyYW17TmFtZX0gKSB7CiAgICAgICAgICAgICRFcnJvcnsnTmFtZUludmFsaWQnfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgfQoKICAgICAgICBteSAkTG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICAgICAjIGlmIG5vIGVycm9ycyBvY2N1cnJlZAogICAgICAgIGlmICggISVFcnJvciApIHsKCiAgICAgICAgICAgICMgZ2V0IHNlcnZpY2UgaWRzCiAgICAgICAgICAgIG15IEBTZXJ2aWNlSURzID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ1NlcnZpY2VJRHMnICk7CiAgICAgICAgICAgICRHZXRQYXJhbXtTZXJ2aWNlSURzfSA9IFxAU2VydmljZUlEczsKCiAgICAgICAgICAgICMgc2F2ZSB0byBkYXRhYmFzZQogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17U0xBSUR9ICkgewoKICAgICAgICAgICAgICAgICMgYWRkIGEgbmV3IHNsYQogICAgICAgICAgICAgICAgJEdldFBhcmFte1NMQUlEfSA9ICRTTEFPYmplY3QtPlNMQUFkZCgKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17U0xBSUR9ICkgewogICAgICAgICAgICAgICAgICAgICRFcnJvcntNZXNzYWdlfSA9ICRMb2dPYmplY3QtPkdldExvZ0VudHJ5KAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIFdoYXQgPT4gJ01lc3NhZ2UnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyB1cGRhdGUgdGhlIHNsYQogICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU0xBT2JqZWN0LT5TTEFVcGRhdGUoCiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9ye01lc3NhZ2V9ID0gJExvZ09iamVjdC0+R2V0TG9nRW50cnkoCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgV2hhdCA9PiAnTWVzc2FnZScsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJUVycm9yICkgewoKICAgICAgICAgICAgICAgICMgdXBkYXRlIHByZWZlcmVuY2VzCiAgICAgICAgICAgICAgICBteSAlU0xBRGF0YSA9ICRTTEFPYmplY3QtPlNMQUdldCgKICAgICAgICAgICAgICAgICAgICBTTEFJRCAgPT4gJEdldFBhcmFte1NMQUlEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15ICVQcmVmZXJlbmNlcyA9ICgpOwogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NMQVByZWZlcmVuY2VzJykgKSB7CiAgICAgICAgICAgICAgICAgICAgJVByZWZlcmVuY2VzID0gJXsgJENvbmZpZ09iamVjdC0+R2V0KCdTTEFQcmVmZXJlbmNlcycpIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgbXkgJEl0ZW0gKCBzb3J0IGtleXMgJVByZWZlcmVuY2VzICkgewogICAgICAgICAgICAgICAgICAgIG15ICRNb2R1bGUgPSAkUHJlZmVyZW5jZXN7JEl0ZW19LT57TW9kdWxlfQogICAgICAgICAgICAgICAgICAgICAgICB8fCAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlNMQVByZWZlcmVuY2VzOjpHZW5lcmljJzsKCiAgICAgICAgICAgICAgICAgICAgIyBsb2FkIG1vZHVsZQogICAgICAgICAgICAgICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoJE1vZHVsZSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAkT2JqZWN0ID0gJE1vZHVsZS0+bmV3KAogICAgICAgICAgICAgICAgICAgICAgICAleyRTZWxmfSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiAkUHJlZmVyZW5jZXN7JEl0ZW19LAogICAgICAgICAgICAgICAgICAgICAgICBEZWJ1ZyAgICAgID0+ICRTZWxmLT57RGVidWd9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbXkgJE5vdGU7CiAgICAgICAgICAgICAgICAgICAgbXkgQFBhcmFtcyA9ICRPYmplY3QtPlBhcmFtKCBTTEFEYXRhID0+IFwlU0xBRGF0YSApOwogICAgICAgICAgICAgICAgICAgIGlmIChAUGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICVHZXRQYXJhbSA9ICgpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFBhcmFtSXRlbSAoQFBhcmFtcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgQEFycmF5ID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJFBhcmFtSXRlbS0+e05hbWV9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRQYXJhbUl0ZW0tPntOYW1lfSB9ID0gXEBBcnJheTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhJE9iamVjdC0+UnVuKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFBhcmFtID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0xBRGF0YSAgPT4gXCVTTEFEYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROb3RlIC49ICRMYXlvdXRPYmplY3QtPk5vdGlmeSggSW5mbyA9PiAkT2JqZWN0LT5FcnJvcigpICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBpZiB0aGUgdXNlciB3b3VsZCBsaWtlIHRvIGNvbnRpbnVlIGVkaXRpbmcgdGhlIFNMQSwganVzdCByZWRpcmVjdCB0byB0aGUgZWRpdCBzY3JlZW4KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICBkZWZpbmVkICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb250aW51ZUFmdGVyU2F2ZScgKQogICAgICAgICAgICAgICAgICAgICYmICggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbnRpbnVlQWZ0ZXJTYXZlJyApIGVxICcxJyApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3ViYWN0aW9uPVNMQUVkaXQ7U0xBSUQ9JEdldFBhcmFte1NMQUlEfSIKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIHJldHVybiB0byBvdmVydmlldwogICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAjIGhlYWRlcgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRFcnJvcntNZXNzYWdlfQogICAgICAgICAgICA/ICRMYXlvdXRPYmplY3QtPk5vdGlmeSgKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICBJbmZvICAgICA9PiAkRXJyb3J7TWVzc2FnZX0sCiAgICAgICAgICAgICkKICAgICAgICAgICAgOiAnJzsKCiAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9NYXNrTmV3KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgJUVycm9yLAogICAgICAgICk7CgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzbGEgb3ZlcnZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2UgewoKICAgICAgICAjIG91dHB1dCBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgY2hlY2sgaWYgc2VydmljZSBpcyBlbmFibGVkIHRvIHVzZSBpdCBoZXJlCiAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2UnKSApIHsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAiUGxlYXNlIGFjdGl2YXRlICVzIGZpcnN0ISIsICJTZXJ2aWNlIiApLAogICAgICAgICAgICAgICAgTGluayAgICAgPT4KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAgICAgLiAnQWN0aW9uPUFkbWluU3lzdGVtQ29uZmlndXJhdGlvbjtTdWJhY3Rpb249VmlldztTZXR0aW5nPVRpY2tldCUzQSUzQVNlcnZpY2U7JywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ0FjdGlvbkxpc3QnICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ0FjdGlvbkFkZCcgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSW5jbHVkZUludmFsaWQnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEluY2x1ZGVJbnZhbGlkICAgICAgICA9PiAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSwKICAgICAgICAgICAgICAgIEluY2x1ZGVJbnZhbGlkQ2hlY2tlZCA9PiAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA/ICdjaGVja2VkJyA6ICcnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ0ZpbHRlcicgKTsKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnSW1wb3J0RXhwb3J0V2lkZ2V0JyApOwojIEVPIFNlcnZpY2VDYXRhbG9nCgogICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3IHJlc3VsdAogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld0xpc3QnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzZXJ2aWNlIGxpc3QKICAgICAgICBteSAlU2VydmljZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpLT5TZXJ2aWNlTGlzdCgKICAgICAgICAgICAgVmFsaWQgID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdmFsaWQgbGlzdAogICAgICAgIG15ICVWYWxpZExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KCk7CgogICAgICAgICMgZ2V0IHNsYSBsaXN0CiAgICAgICAgbXkgJVNMQUxpc3QgPSAkU0xBT2JqZWN0LT5TTEFMaXN0KAogICAgICAgICAgICBWYWxpZCAgPT4gJFNlbGYtPntJbmNsdWRlSW52YWxpZH0gPyAwIDogMSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGlmIHRoZXJlIGFyZSBhbnkgU0xBJ3MgZGVmaW5lZCwgdGhleSBhcmUgc2hvd24KICAgICAgICBpZiAoJVNMQUxpc3QpIHsKICAgICAgICAgICAgU0xBSUQ6CiAgICAgICAgICAgIGZvciBteSAkU0xBSUQgKCBzb3J0IHsgbGMgJFNMQUxpc3R7JGF9IGNtcCBsYyAkU0xBTGlzdHskYn0gfSBrZXlzICVTTEFMaXN0ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBzbGEgZGF0YQogICAgICAgICAgICAgICAgbXkgJVNMQURhdGEgPSAkU0xBT2JqZWN0LT5TTEFHZXQoCiAgICAgICAgICAgICAgICAgICAgU0xBSUQgID0+ICRTTEFJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIHRoZSBzZXJ2aWNlIGxpc3QKICAgICAgICAgICAgICAgIG15IEBTZXJ2aWNlTGlzdDsKICAgICAgICAgICAgICAgIGZvciBteSAkU2VydmljZUlEICgKICAgICAgICAgICAgICAgICAgICBzb3J0IHsgbGMgJFNlcnZpY2VMaXN0eyRhfSBjbXAgbGMgJFNlcnZpY2VMaXN0eyRifSB9CiAgICAgICAgICAgICAgICAgICAgQHsgJFNMQURhdGF7U2VydmljZUlEc30gfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTZXJ2aWNlTGlzdCwgJFNlcnZpY2VMaXN0eyRTZXJ2aWNlSUR9IHx8ICctJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIG91dHB1dCBvdmVydmlldyBsaXN0IHJvdwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdMaXN0Um93JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVNMQURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2UgPT4gJFNlcnZpY2VMaXN0WzBdIHx8ICctJywKICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWQgICA9PiAkVmFsaWRMaXN0eyAkU0xBRGF0YXtWYWxpZElEfSB9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgU0xBSUQgaWYgc2NhbGFyIEBTZXJ2aWNlTGlzdCA8PSAxOwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHRoZSBmaXJzdCBzZXJ2aWNlIGlkCiAgICAgICAgICAgICAgICBzaGlmdCBAU2VydmljZUxpc3Q7CgogICAgICAgICAgICAgICAgZm9yIG15ICRTZXJ2aWNlTmFtZSAoQFNlcnZpY2VMaXN0KSB7CgogICAgICAgICAgICAgICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3IGxpc3Qgcm93CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TGlzdFJvdycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VydmljZSA9PiAkU2VydmljZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2UgYSBubyBkYXRhIGZvdW5kIG1zZyBpcyBkaXNwbGF5ZWQKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdOb0RhdGFGb3VuZE1zZycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pblNMQScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9Cn0KCnN1YiBfTWFza05ldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICVTTEFEYXRhOwogICAgJFNMQURhdGF7U0xBSUR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NMQUlEJyApIHx8ICcnOwoKICAgIGlmICggJFNMQURhdGF7U0xBSUR9ICkgewoKICAgICAgICAjIGdldCBzbGEgZGF0YQogICAgICAgICVTTEFEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNMQScpLT5TTEFHZXQoCiAgICAgICAgICAgIFNMQUlEICA9PiAkU0xBRGF0YXtTTEFJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTTEFEYXRhe1NlcnZpY2VJRH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2VydmljZUlEJyApOwogICAgfQoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGxpc3QgdHlwZQogICAgbXkgJExpc3RUeXBlID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpMaXN0VHlwZScpOwoKICAgICMgZ2V0IHNlcnZpY2UgbGlzdAogICAgbXkgJVNlcnZpY2VMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKS0+U2VydmljZUxpc3QoCiAgICAgICAgVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgS2VlcENoaWxkcmVuID0+ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlOjpLZWVwQ2hpbGRyZW4nKSAvLyAwLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBnZW5lcmF0ZSBTZXJ2aWNlT3B0aW9uU3RyZwogICAgJFBhcmFte1NlcnZpY2VPcHRpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlU2VydmljZUxpc3QsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1NlcnZpY2VJRHMnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRTTEFEYXRhe1NlcnZpY2VJRHN9IHx8IFtdLAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIFRyZWVWaWV3ICAgID0+ICggJExpc3RUeXBlIGVxICd0cmVlJyApID8gMSA6IDAsCiAgICAgICAgTWF4ICAgICAgICAgPT4gMjAwLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKIyAtLS0KIyBJVFNNQ29yZQojIC0tLQogICAgICAgICMgZ2VuZXJhdGUgVHlwZU9wdGlvblN0cmcKICAgICAgICBteSAkVHlwZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpTTEE6OlR5cGUnLAogICAgICAgICk7CiAgICAgICAgJFBhcmFte1R5cGVPcHRpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgID0+ICRUeXBlTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnVHlwZUlEJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkU0xBRGF0YXtUeXBlSUR9LAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CiMgLS0tCgogICAgIyBnZW5lcmF0ZSBDYWxlbmRhck9wdGlvblN0cmcKICAgIG15ICVDYWxlbmRhckxpc3Q7CgogICAgbXkgJE1heGltdW0gPSAkQ29uZmlnT2JqZWN0LT5HZXQoIk1heGltdW1DYWxlbmRhck51bWJlciIpIHx8IDUwOwoKICAgIGZvciBteSAkQ2FsZW5kYXJOdW1iZXIgKCAnJywgMSAuLiAkTWF4aW11bSApIHsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgiVGltZVZhY2F0aW9uRGF5czo6Q2FsZW5kYXIkQ2FsZW5kYXJOdW1iZXIiKSApIHsKICAgICAgICAgICAgJENhbGVuZGFyTGlzdHskQ2FsZW5kYXJOdW1iZXJ9ID0gIkNhbGVuZGFyICRDYWxlbmRhck51bWJlciAtICIKICAgICAgICAgICAgICAgIC4gJENvbmZpZ09iamVjdC0+R2V0KCAiVGltZVpvbmU6OkNhbGVuZGFyIiAuICRDYWxlbmRhck51bWJlciAuICJOYW1lIiApOwogICAgICAgIH0KICAgIH0KICAgICRTTEFEYXRhe0NhbGVuZGFyT3B0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVDYWxlbmRhckxpc3QsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdDYWxlbmRhcicsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtDYWxlbmRhcn0gfHwgJFNMQURhdGF7Q2FsZW5kYXJ9LAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CiAgICBteSAlTm90aWZ5TGV2ZWxMaXN0ID0gKAogICAgICAgIDEwID0+ICcxMCUnLAogICAgICAgIDIwID0+ICcyMCUnLAogICAgICAgIDMwID0+ICczMCUnLAogICAgICAgIDQwID0+ICc0MCUnLAogICAgICAgIDUwID0+ICc1MCUnLAogICAgICAgIDYwID0+ICc2MCUnLAogICAgICAgIDcwID0+ICc3MCUnLAogICAgICAgIDgwID0+ICc4MCUnLAogICAgICAgIDkwID0+ICc5MCUnLAogICAgKTsKICAgICRTTEFEYXRhe0ZpcnN0UmVzcG9uc2VOb3RpZnlPcHRpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcJU5vdGlmeUxldmVsTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0ZpcnN0UmVzcG9uc2VOb3RpZnknLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17Rmlyc3RSZXNwb25zZU5vdGlmeX0gfHwgJFNMQURhdGF7Rmlyc3RSZXNwb25zZU5vdGlmeX0sCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKICAgICRTTEFEYXRhe1VwZGF0ZU5vdGlmeU9wdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlTm90aWZ5TGV2ZWxMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnVXBkYXRlTm90aWZ5JywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1VwZGF0ZU5vdGlmeX0gfHwgJFNMQURhdGF7VXBkYXRlTm90aWZ5fSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwogICAgJFNMQURhdGF7U29sdXRpb25Ob3RpZnlPcHRpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcJU5vdGlmeUxldmVsTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ1NvbHV0aW9uTm90aWZ5JywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1NvbHV0aW9uTm90aWZ5fSB8fCAkU0xBRGF0YXtTb2x1dGlvbk5vdGlmeX0sCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIGdldCB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExpc3QoKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgICRTTEFEYXRhe1ZhbGlkT3B0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFwlVmFsaWRMaXN0LAogICAgICAgIE5hbWUgICAgICAgPT4gJ1ZhbGlkSUQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1ZhbGlkSUR9IHx8ICRTTEFEYXRhe1ZhbGlkSUR9IHx8ICRWYWxpZExpc3RSZXZlcnNle3ZhbGlkfSwKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIG91dHB1dCBzbGEgZWRpdAogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXcnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBTTEFJRCAgICAgPT4gJFNMQURhdGF7U0xBSUR9LAogICAgICAgICAgICBTTEFOYW1lICAgPT4gJFNMQURhdGF7TmFtZX0sCiAgICAgICAgICAgIFN1YmFjdGlvbiA9PiAkUGFyYW17U3ViYWN0aW9ufSwKICAgICAgICAgICAgJVBhcmFtCiAgICAgICAgfSwKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ0FjdGlvbkxpc3QnICk7CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnQWN0aW9uT3ZlcnZpZXcnICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnU0xBRWRpdCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJVNMQURhdGEsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzaG93cyBoZWFkZXIKICAgIGlmICggJFNMQURhdGF7U0xBSUR9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdIZWFkZXJFZGl0JyApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ0hlYWRlckFkZCcgKTsKICAgIH0KCiAgICAjIHNob3cgZWFjaCBwcmVmZXJlbmNlcyBzZXR0aW5nCiAgICBteSAlUHJlZmVyZW5jZXMgPSAoKTsKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTTEFQcmVmZXJlbmNlcycpICkgewogICAgICAgICVQcmVmZXJlbmNlcyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnU0xBUHJlZmVyZW5jZXMnKSB9OwogICAgfQogICAgZm9yIG15ICRJdGVtICggc29ydCBrZXlzICVQcmVmZXJlbmNlcyApIHsKICAgICAgICBteSAkTW9kdWxlID0gJFByZWZlcmVuY2VzeyRJdGVtfS0+e01vZHVsZX0KICAgICAgICAgICAgfHwgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpTTEFQcmVmZXJlbmNlczo6R2VuZXJpYyc7CgogICAgICAgICMgbG9hZCBtb2R1bGUKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCRNb2R1bGUpICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgIH0KICAgICAgICBteSAkT2JqZWN0ID0gJE1vZHVsZS0+bmV3KAogICAgICAgICAgICAleyRTZWxmfSwKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiAkUHJlZmVyZW5jZXN7JEl0ZW19LAogICAgICAgICAgICBEZWJ1ZyAgICAgID0+ICRTZWxmLT57RGVidWd9LAogICAgICAgICk7CiAgICAgICAgbXkgQFBhcmFtcyA9ICRPYmplY3QtPlBhcmFtKCBTTEFEYXRhID0+IFwlU0xBRGF0YSApOwogICAgICAgIGlmIChAUGFyYW1zKSB7CiAgICAgICAgICAgIGZvciBteSAkUGFyYW1JdGVtIChAUGFyYW1zKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTTEFJdGVtJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsgJVBhcmFtLCB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICByZWYoICRQYXJhbUl0ZW0tPntEYXRhfSApIGVxICdIQVNIJwogICAgICAgICAgICAgICAgICAgIHx8IHJlZiggJFByZWZlcmVuY2VzeyRJdGVtfS0+e0RhdGF9ICkgZXEgJ0hBU0gnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICVCdWlsZFNlbGVjdGlvblBhcmFtcyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgJXsgJFByZWZlcmVuY2VzeyRJdGVtfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAleyRQYXJhbUl0ZW19LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJEJ1aWxkU2VsZWN0aW9uUGFyYW1ze0NsYXNzfSA9IGpvaW4oICcgJywgJEJ1aWxkU2VsZWN0aW9uUGFyYW1ze0NsYXNzfSAvLyAnJywgJ01vZGVybml6ZScgKTsKCiAgICAgICAgICAgICAgICAgICAgJFBhcmFtSXRlbS0+eydPcHRpb24nfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAlQnVpbGRTZWxlY3Rpb25QYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJFBhcmFtSXRlbS0+e0Jsb2NrfSB8fCAkUHJlZmVyZW5jZXN7JEl0ZW19LT57QmxvY2t9IHx8ICdPcHRpb24nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAleyAkUHJlZmVyZW5jZXN7JEl0ZW19IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JFBhcmFtSXRlbX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgb3V0cHV0IGJhY2sKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pblNMQScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0KICAgICk7Cn0KCjE7Cg==</File>
        <File Location="Custom/Kernel/Modules/AgentITSMServiceZoom.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSAgLSBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01TZXJ2aWNlWm9vbS5wbQojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNU2VydmljZVpvb207Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwojIEVPIFNlcnZpY2VDYXRhbG9nCgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IHBhcmFtcwogICAgbXkgJFNlcnZpY2VJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTZXJ2aWNlSUQnICk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFNlcnZpY2VJRCApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBTZXJ2aWNlSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHNlcnZpY2UKICAgIG15ICVTZXJ2aWNlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKS0+U2VydmljZUdldCgKICAgICAgICBTZXJ2aWNlSUQgICAgID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgSW5jaWRlbnRTdGF0ZSA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRTZXJ2aWNle1NlcnZpY2VJRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ1NlcnZpY2VJRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJywgJFNlcnZpY2VJRCApLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEhUTUxWaWV3IFN1YmFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdIVE1MVmlldycgKSB7CgogICAgICAgICRTZXJ2aWNle0Rlc2NyaXB0aW9uTG9uZ30gPSAkTGF5b3V0T2JqZWN0LT5IVE1MTGlua1F1b3RlKAogICAgICAgICAgICBTdHJpbmcgPT4gJFNlcnZpY2V7RGVzY3JpcHRpb25zfXskTGF5b3V0T2JqZWN0LT57VXNlckxhbmd1YWdlfX17RGVzY3JpcHRpb25Mb25nfQogICAgICAgICAgICAgICAgfHwgJFNlcnZpY2V7RGVzY3JpcHRpb25zfXskS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0RlZmF1bHRMYW5ndWFnZScpfXtEZXNjcmlwdGlvbkxvbmd9CiAgICAgICAgICAgICAgICB8fCAkU2VydmljZXtEZXNjcmlwdGlvbnN9eydlbid9e0Rlc2NyaXB0aW9uTG9uZ30KICAgICAgICAgICAgICAgIHx8ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0Rlc2NyaXB0aW9uIG5vdCBhdmFpbGFibGUuJyApLAogICAgICAgICk7CgogICAgICAgICMgYWRkIG5lZWRlZCBIVE1MIGhlYWRlcnMKICAgICAgICAkU2VydmljZXtEZXNjcmlwdGlvbkxvbmd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICBTdHJpbmcgID0+ICRTZXJ2aWNle0Rlc2NyaXB0aW9uTG9uZ30sCiAgICAgICAgICAgIENoYXJzZXQgPT4gJ3V0Zi04JywKICAgICAgICApOwoKICAgICAgICAjIHJldHVybiBjb21wbGV0ZSBIVE1MIGFzIGFuIGF0dGFjaG1lbnQKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkU2VydmljZXtEZXNjcmlwdGlvbkxvbmd9LAogICAgICAgICk7CiAgICB9CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBEb3dubG9hZEF0dGFjaG1lbnQgU3ViYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Rvd25sb2FkQXR0YWNobWVudCcgKSB7CgogICAgICAgIG15ICRGaWxlSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsZUlEJyApOwoKICAgICAgICBpZiAoICFkZWZpbmVkICRGaWxlSUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05lZWQgRmlsZUlEIScpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgYXR0YWNobWVudHMuCiAgICAgICAgbXkgJUZpbGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpLT5BdHRhY2htZW50R2V0KAogICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJFNlcnZpY2VJRCwKICAgICAgICAgICAgRmlsZUlEICAgID0+ICRGaWxlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoJUZpbGUpIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoJUZpbGUpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZUlEKSEgTWF5IGJlIGFuIGF0dGFjayEhISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CiAgICB9CgogICAgJFNlcnZpY2V7RGVzY3JpcHRpb25TaG9ydH0gPSAkU2VydmljZXtEZXNjcmlwdGlvbnN9eyRMYXlvdXRPYmplY3QtPntVc2VyTGFuZ3VhZ2V9fXtEZXNjcmlwdGlvblNob3J0fSB8fAogICAgICAgICAgICAkU2VydmljZXtEZXNjcmlwdGlvbnN9eyRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRGVmYXVsdExhbmd1YWdlJyl9e0Rlc2NyaXB0aW9uU2hvcnR9IHx8CiAgICAgICAgICAgICRTZXJ2aWNle0Rlc2NyaXB0aW9uc317J2VuJ317RGVzY3JpcHRpb25TaG9ydH0gfHwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnRGVzY3JpcHRpb24gbm90IGF2YWlsYWJsZS4nICk7CgogICAgIyBidWlsZCBkeW5hbWljIGZpZWxkcy4KICAgIG15IEBEeW5hbWljRmllbGRMaXN0OwogICAgbXkgJER5bmFtaWNGaWVsZExvb2t1cCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBPYmplY3RUeXBlID0+ICdTZXJ2aWNlJywKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBAeyREeW5hbWljRmllbGRMb29rdXB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkKTsKCiAgICAgICAgbXkgJFZhbHVlR2V0ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRWYWx1ZUdldDsKCiAgICAgICAgIyB1c2UgdHJhbnNsYXRpb24gaGVyZSB0byBiZSBhYmxlIHRvIHJlZHVjZSB0aGUgY2hhcmFjdGVyIGxlbmd0aCBpbiB0aGUgdGVtcGxhdGUKICAgICAgICBteSAkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGQtPntMYWJlbH0gKTsKCiAgICAgICAgbXkgJFZhbHVlU3RyZyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlR2V0LAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDEzMCwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBEeW5hbWljRmllbGRMaXN0LCB7CiAgICAgICAgICAgICREeW5hbWljRmllbGQtPntOYW1lfSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZC0+e05hbWV9LAogICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgIExpbmtQcmV2aWV3ICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua1ByZXZpZXd9LAogICAgICAgICAgICBUaXRsZUZpZWxkQ29uZmlnICAgICAgPT4gKCAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnVGl0bGUnICkgPyAkRHluYW1pY0ZpZWxkLT57Q29uZmlnfSA6IHVuZGVmLAoKICAgICAgICAgICAgIyBJbmNsdWRlIHVuaXF1ZSBwYXJhbWV0ZXIgd2l0aCBkeW5hbWljIGZpZWxkIG5hbWUgaW4gY2FzZSBvZiBjb2xsaXNpb24gd2l0aCBvdGhlcnMuCiAgICAgICAgICAgICMgICBQbGVhc2Ugc2VlIGJ1ZyMxMzM2MiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkLT57TmFtZX0iID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIG91dHB1dCBkeW5hbWljIGZpZWxkcwogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkIChARHluYW1pY0ZpZWxkTGlzdCkgewoKICAgICAgICAjIGhhbmRsZSB0aXRsZXMgc2VwYXJhdGVseQogICAgICAgIGlmICggJEZpZWxkLT57VGl0bGVGaWVsZENvbmZpZ30gKSB7CiAgICAgICAgICAgIG15ICRTdHlsZSA9ICJwYWRkaW5nLWxlZnQ6NHB4O2ZvbnQtc2l6ZTokRmllbGQtPntUaXRsZUZpZWxkQ29uZmlnfXtGb250U2l6ZX1weDtjb2xvcjokRmllbGQtPntUaXRsZUZpZWxkQ29uZmlnfXtGb250Q29sb3J9OyI7CgogICAgICAgICAgICBpZiAoICRGaWVsZC0+e1RpdGxlRmllbGRDb25maWd9e0NCRm9udFN0eWxlVW5kZXJMaW5lVmFsdWV9ICkgewogICAgICAgICAgICAgICAgJFN0eWxlIC49ICJ0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkRmllbGQtPntUaXRsZUZpZWxkQ29uZmlnfXtDQkZvbnRTdHlsZUl0YWxpY1ZhbHVlfSApIHsKICAgICAgICAgICAgICAgICRTdHlsZSAuPSAiZm9udC1zdHlsZTppdGFsaWM7IjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICRGaWVsZC0+e1RpdGxlRmllbGRDb25maWd9e0NCRm9udFN0eWxlQm9sZFZhbHVlfSApIHsKICAgICAgICAgICAgICAgICRTdHlsZSAuPSAiZm9udC13ZWlnaHQ6Ym9sZDsiOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1RpY2tldER5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXh0ICAgICAgID0+ICRGaWVsZC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICBTdHlsZSAgICAgID0+ICRTdHlsZSwKICAgICAgICAgICAgICAgICAgICBUaXRsZUZpZWxkID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBGSUVMRDsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTZXJ2aWNlRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBMYWJlbCA9PiAkRmllbGQtPntMYWJlbH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkRmllbGQtPntMaW5rfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTZXJ2aWNlRHluYW1pY0ZpZWxkTGluaycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAkRmllbGQtPntOYW1lfSA9PiAkRmllbGQtPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgPT4gJEZpZWxkLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgID0+ICRGaWVsZC0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICBMaW5rICAgICAgICAgICA9PiAkRmllbGQtPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICBMaW5rUHJldmlldyAgICA9PiAkRmllbGQtPntMaW5rUHJldmlld30sCgogICAgICAgICAgICAgICAgICAgICMgSW5jbHVkZSB1bmlxdWUgcGFyYW1ldGVyIHdpdGggZHluYW1pYyBmaWVsZCBuYW1lIGluIGNhc2Ugb2YgY29sbGlzaW9uIHdpdGggb3RoZXJzLgogICAgICAgICAgICAgICAgICAgICMgICBQbGVhc2Ugc2VlIGJ1ZyMxMzM2MiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkXyRGaWVsZC0+e05hbWV9IiA9PiAkRmllbGQtPntUaXRsZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTZXJ2aWNlRHluYW1pY0ZpZWxkUGxhaW4nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJEZpZWxkLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRGaWVsZC0+e1RpdGxlfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQojIEVPIFNlcnZpY2VDYXRhbG9nCgogICAgIyBydW4gY29uZmlnIGl0ZW0gbWVudSBtb2R1bGVzCiAgICBpZiAoIHJlZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01TZXJ2aWNlOjpGcm9udGVuZDo6TWVudU1vZHVsZScpIGVxICdIQVNIJyApIHsKICAgICAgICBteSAlTWVudXMgICA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTVNlcnZpY2U6OkZyb250ZW5kOjpNZW51TW9kdWxlJykgfTsKICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgZm9yIG15ICRNZW51ICggc29ydCBrZXlzICVNZW51cyApIHsKCiAgICAgICAgICAgICMgbG9hZCBtb2R1bGUKICAgICAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCAkTWVudXN7JE1lbnV9LT57TW9kdWxlfSApICkgewogICAgICAgICAgICAgICAgbXkgJE9iamVjdCA9ICRNZW51c3skTWVudX0tPntNb2R1bGV9LT5uZXcoCiAgICAgICAgICAgICAgICAgICAgJXskU2VsZn0sCiAgICAgICAgICAgICAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNle1NlcnZpY2VJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IGNsYXNzZXMKICAgICAgICAgICAgICAgIGlmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkTWVudXN7JE1lbnV9LT57VGFyZ2V0fSBlcSAnUG9wVXAnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTWVudXN7JE1lbnV9LT57TWVudUNsYXNzfSA9ICdBc1BvcHVwJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkTWVudXN7JE1lbnV9LT57VGFyZ2V0fSBlcSAnQmFjaycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRNZW51c3skTWVudX0tPntNZW51Q2xhc3N9ID0gJ0hpc3RvcnlCYWNrJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBydW4gbW9kdWxlCiAgICAgICAgICAgICAgICAkQ291bnRlciA9ICRPYmplY3QtPlJ1bigKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgU2VydmljZSA9PiBcJVNlcnZpY2UsCiAgICAgICAgICAgICAgICAgICAgQ291bnRlciA9PiAkQ291bnRlciwKICAgICAgICAgICAgICAgICAgICBDb25maWcgID0+ICRNZW51c3skTWVudX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBzbGEgb2JqZWN0CiAgICBteSAkU0xBT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNMQScpOwoKICAgICMgZ2V0IHNsYSBsaXN0CiAgICBteSAlU0xBTGlzdCA9ICRTTEFPYmplY3QtPlNMQUxpc3QoCiAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoJVNMQUxpc3QpIHsKCiAgICAgICAgIyBvdXRwdXQgcm93CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NMQScsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRTTEFJRCAoIHNvcnQgeyAkU0xBTGlzdHskYX0gY21wICRTTEFMaXN0eyRifSB9IGtleXMgJVNMQUxpc3QgKSB7CgogICAgICAgICAgICAjIGdldCBzbGEgZGF0YQogICAgICAgICAgICBteSAlU0xBID0gJFNMQU9iamVjdC0+U0xBR2V0KAogICAgICAgICAgICAgICAgU0xBSUQgID0+ICRTTEFJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCByb3cKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTTEFSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVNMQSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxpbmtlZCBvYmplY3RzCiAgICBteSAkTGlua0xpc3RXaXRoRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgT2JqZWN0ID0+ICdTZXJ2aWNlJywKICAgICAgICBLZXkgICAgPT4gJFNlcnZpY2VJRCwKICAgICAgICBTdGF0ZSAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBsaW5rIHRhYmxlIHZpZXcgbW9kZQogICAgbXkgJExpbmtUYWJsZVZpZXdNb2RlID0gJENvbmZpZ09iamVjdC0+R2V0KCdMaW5rT2JqZWN0OjpWaWV3TW9kZScpOwoKICAgICMgY3JlYXRlIHRoZSBsaW5rIHRhYmxlCiAgICBteSAkTGlua1RhYmxlU3RyZyA9ICRMYXlvdXRPYmplY3QtPkxpbmtPYmplY3RUYWJsZUNyZWF0ZSgKICAgICAgICBMaW5rTGlzdFdpdGhEYXRhID0+ICRMaW5rTGlzdFdpdGhEYXRhLAogICAgICAgIFZpZXdNb2RlICAgICAgICAgPT4gJExpbmtUYWJsZVZpZXdNb2RlLAogICAgICAgIE9iamVjdCAgICAgICAgICAgPT4gJ1NlcnZpY2UnLAogICAgICAgIEtleSAgICAgICAgICAgICAgPT4gJFNlcnZpY2VJRCwKICAgICk7CgogICAgIyBvdXRwdXQgdGhlIGxpbmsgdGFibGUKICAgIGlmICgkTGlua1RhYmxlU3RyZykgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMaW5rVGFibGUnIC4gJExpbmtUYWJsZVZpZXdNb2RlLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExpbmtUYWJsZVN0cmcgPT4gJExpbmtUYWJsZVN0cmcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNldCBpbmNpZGVudCBzaWduYWwKICAgIG15ICVJbmNpU2lnbmFscyA9ICgKICAgICAgICBUcmFuc2xhdGFibGUoJ29wZXJhdGlvbmFsJykgPT4gJ2dyZWVubGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ3dhcm5pbmcnKSAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCdpbmNpZGVudCcpICAgID0+ICdyZWRsZWQnLAogICAgKTsKCiAgICAjIGdldCB1c2VyIG9iamVjdAogICAgbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICMgZ2V0IGNyZWF0ZSB1c2VyIGRhdGEKICAgICRTZXJ2aWNle0NyZWF0ZUJ5TmFtZX0gPSAkVXNlck9iamVjdC0+VXNlck5hbWUoCiAgICAgICAgVXNlcklEID0+ICRTZXJ2aWNle0NyZWF0ZUJ5fSwKICAgICk7CgogICAgIyBnZXQgY2hhbmdlIHVzZXIgZGF0YQogICAgJFNlcnZpY2V7Q2hhbmdlQnlOYW1lfSA9ICRVc2VyT2JqZWN0LT5Vc2VyTmFtZSgKICAgICAgICBVc2VySUQgPT4gJFNlcnZpY2V7Q2hhbmdlQnl9LAogICAgKTsKCiAgICAjIHN0b3JlIGxhc3Qgc2NyZWVuCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuVmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57UmVxdWVzdGVkVVJMfSwKICAgICk7CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01TZXJ2aWNlWm9vbScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlU2VydmljZSwKICAgICAgICAgICAgQ3VySW5jaVNpZ25hbCA9PiAkSW5jaVNpZ25hbHN7ICRTZXJ2aWNle0N1ckluY2lTdGF0ZVR5cGV9IH0sCiAgICAgICAgfSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AdminService.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBlNDRjMThhZWE5YWJjMTI1ZmRkZjljZWVlZDIwNGRiNGZhYjI5MGUwIC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pblNlcnZpY2UudHQKIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXciKSAlXQo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckZpcnN0Ij4KICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIE1hbmFnZW1lbnQiKSB8IGh0bWwgJV08L2gxPgoKICAgIFslIEJyZWFkY3J1bWJQYXRoID0gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+IFRyYW5zbGF0ZSgnU2VydmljZSBNYW5hZ2VtZW50JyksCiAgICAgICAgICAgICAgICBMaW5rID0+IEVudigiQWN0aW9uIiksCiAgICAgICAgICAgIH0sCiAgICAgICAgXQogICAgJV0KCiAgICBbJSBJRiBEYXRhLlNlcnZpY2VJRCA9PSAiTkVXIiAgJV0KICAgICAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsgTmFtZSA9PiBUcmFuc2xhdGUoIkFkZCBTZXJ2aWNlIiksfSkgJV0KICAgIFslIEVMU0lGIERhdGEuU2VydmljZUlEICVdCiAgICAgICAgWyUgVVNFIEVkaXRUaXRsZSA9IFN0cmluZyhUcmFuc2xhdGUoIkVkaXQgU2VydmljZSIpKSAlXQogICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IEVkaXRUaXRsZS5hcHBlbmQoICc6ICcsIERhdGEuU2VydmljZU5hbWUgKSB9KSAlXQogICAgWyUgRU5EICVdCgogICAgWyUgSU5DTFVERSAiQnJlYWRjcnVtYi50dCIgUGF0aCA9IEJyZWFkY3J1bWJQYXRoICVdCgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkluY2x1ZGVJbnZhbGlkIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRmlsdGVyIGJ5IHZhbGlkIHN0YXRlIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iSW5jbHVkZUludmFsaWQiIG5hbWU9IkluY2x1ZGVJbnZhbGlkIiB2YWx1ZT0iMSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiSW5jbHVkZSBpbnZhbGlkIHNlcnZpY2VzIikgfCBodG1sICVdIiBbJSBEYXRhLkluY2x1ZGVJbnZhbGlkQ2hlY2tlZCB8IGh0bWwgJV0vPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iSW5jbHVkZUludmFsaWQiPlslIFRyYW5zbGF0ZSgiSW5jbHVkZSBpbnZhbGlkIHNlcnZpY2VzIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbmNsdWRlSW52YWxpZCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uTGlzdCIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uT3ZlcnZpZXciKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT5bJSBUcmFuc2xhdGUoIkdvIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uT3ZlcnZpZXciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBY3Rpb25BZGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlcnZpY2VFZGl0O1NlcnZpY2VJRD1ORVciIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXBsdXMtc3F1YXJlIj48L2k+WyUgVHJhbnNsYXRlKCJBZGQgU2VydmljZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkFjdGlvbkFkZCIpICVdCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkFjdGlvbkxpc3QiKSAlXQogICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRmlsdGVyIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPjxsYWJlbCBmb3I9IkZpbHRlclNlcnZpY2VzIj5bJSBUcmFuc2xhdGUoIkZpbHRlciBmb3IgU2VydmljZXMiKSB8IGh0bWwgJV08L2xhYmVsPjwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iRmlsdGVyU2VydmljZXMiIGNsYXNzPSJGaWx0ZXJCb3giIHBsYWNlaG9sZGVyPSJbJSBUcmFuc2xhdGUoIkp1c3Qgc3RhcnQgdHlwaW5nIHRvIGZpbHRlci4uLiIpIHwgaHRtbCAlXSIgbmFtZT0iRmlsdGVyU2VydmljZXMiIHZhbHVlPSIiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZpbHRlciBmb3Igc2VydmljZXMiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZpbHRlciIpICVdCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nClslIFJlbmRlckJsb2NrU3RhcnQoIkltcG9ydEV4cG9ydFdpZGdldCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0nV2lkZ2V0U2ltcGxlJyBpZD0nU2VydmljZUltcG9ydEV4cG9ydFdpZGdldCc+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9J0hlYWRlcic+CiAgICAgICAgICAgICAgICA8aDEgY2xhc3M9IkludmlzaWJsZVRleHQiPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSW1wb3J0IC8gRXhwb3J0IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2gxPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoID0gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGUoJ0ltcG9ydCAvIEV4cG9ydCcpLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICVdCgogICAgICAgICAgICBbJSBJTkNMVURFICJCcmVhZGNydW1iLnR0IiBQYXRoID0gQnJlYWRjcnVtYlBhdGggJV0KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NvbnRlbnQnPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9J0ZpZWxkRXhwbGFuYXRpb24nPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgnSGVyZSB5b3UgY2FuIHVwbG9hZCBhIGNvbmZpZ3VyYXRpb24gZmlsZSB0byBpbXBvcnQgc2VydmljZXMgdG8geW91ciBzeXN0ZW0uIFRoZSBmaWxlIG5lZWRzIHRvIGJlIGluIC55bWwgZm9ybWF0IGFzIGV4cG9ydGVkIGJ5IHRoZSBzZXJ2aWNlIG1hbmFnZW1lbnQgbW9kdWxlLicpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSdBY3Rpb25MaXN0IFNwYWNpbmdUb3AnPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSdbJSBFbnYoIkNHSUhhbmRsZSIpICVdJyBtZXRob2Q9J3Bvc3QnIGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRhdGEnIGNsYXNzPSdWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J0NoYWxsZW5nZVRva2VuJyB2YWx1ZT1bJSBFbnYoIlVzZXJDaGFsbGVuZ2VUb2tlbiIpIHwgSlNPTiAlXT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J0FjdGlvbicgdmFsdWU9J0FkbWluU2VydmljZUltcG9ydEV4cG9ydCcvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nU3ViYWN0aW9uJyB2YWx1ZT0nSW1wb3J0Jy8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0nRmlsZVVwbG9hZCcgaWQ9J0ZpbGVVcGxvYWQnIHR5cGU9J2ZpbGUnIHNpemU9JzE4JyBjbGFzcz0nRml4ZWQgVzEwMHBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuRmlsZVVwbG9hZEludmFsaWQgfCBodG1sICVdJy8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSdGaWxlVXBsb2FkRXJyb3InIGNsYXNzPSdUb29sdGlwRXJyb3JNZXNzYWdlJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLicpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0nRmlsZVVwbG9hZFNlcnZlckVycm9yJyBjbGFzcz0nVG9vbHRpcEVycm9yTWVzc2FnZSc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgVHJhbnNsYXRlKCdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLicpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSdTcGFjaW5nVG9wJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0nY2hlY2tib3gnIGlkPSdPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzRXhhbXBsZScgbmFtZT0nT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllcycgdmFsdWU9JzEnLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSdPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzRXhhbXBsZSc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgnT3ZlcndyaXRlIGV4aXN0aW5nIGVudGl0aWVzJykgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSdDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciBTcGFjaW5nVG9wJyBpZD0nU2VydmljZUltcG9ydCcgdHlwZT0nc3VibWl0Jz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0nZmEgZmEtdXBsb2FkJz48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgnU2VydmljZXMgSW1wb3J0JykgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0nWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluU2VydmljZUltcG9ydEV4cG9ydDtTdWJhY3Rpb249RXhwb3J0JyBpZD0nU2VydmljZUV4cG9ydCcgY2xhc3M9J0NhbGxGb3JBY3Rpb24gRnVsbHNpemUgQ2VudGVyJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPSdmYSBmYS1kb3dubG9hZCc+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgnU2VydmljZXMgRXhwb3J0JykgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbXBvcnRFeHBvcnRXaWRnZXQiKSAlXQojIEVPIFNlcnZpY2VDYXRhbG9nCiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KIyBSb3RoZXIgT1NTIC8gU2VydmljZSBDYXRhbG9nCiMgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TGlzdCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KIyBFTyBTZXJ2aWNlIENhdGFsb2cKICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkxpc3QiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiIGlkPSJTZXJ2aWNlcyI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNvbW1lbnQiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQ2hhbmdlZCIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDcmVhdGVkIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdMaXN0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyIFslIElGIERhdGEuVmFsaWRJRCAhPSAxJV1jbGFzcz0iSW52YWxpZCJbJSBFTkQgJV0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgdGl0bGU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iPlslIERhdGEuTGV2ZWxTcGFjZSB8IGh0bWwgJV08YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlcnZpY2VFZGl0O1NlcnZpY2VJRD1bJSBEYXRhLlNlcnZpY2VJRCB8IHVyaSAlXSI+WyUgRGF0YS5OYW1lIHwgdHJ1bmNhdGUoODApIHwgaHRtbCAlXTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHRpdGxlPSJbJSBEYXRhLkNvbW1lbnQgfCBodG1sICVdIj5bJSBEYXRhLkNvbW1lbnQgfCB0cnVuY2F0ZSgyMCkgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBUcmFuc2xhdGUoRGF0YS5WYWxpZCkgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLkNoYW5nZVRpbWUgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuQ3JlYXRlVGltZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld0xpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9IkZpbHRlck1lc3NhZ2UgSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1Ij5bJSBUcmFuc2xhdGUoIk5vIG1hdGNoZXMgZm91bmQuIikgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KCiAgICAgICAgICAgIDwvZGl2PgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlIENhdGFsb2cKICAgICAgICA8L2Rpdj4KIyBFTyBTZXJ2aWNlQ2F0YWxvZwpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdMaXN0IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlNlcnZpY2VFZGl0IikgJV0KIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKIyMgaW5zdGVhZCBvZgojIyAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgojIyAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiMjICAgICAgICAgICAgICAgPGZvcm0+CiMjIHdlIGp1c3Qgc2V0IHRoZSBmb3JtIGFzIHRoZSBvdXRlciBtb3N0IGVsZW1lbnQKIyMgdG8gaW5jbHVkZSB0aGUgbGFuZ3VhZ2VzIGFzIHNlcGFyYXRlIHdpZGdldAojCiMgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgojICAgICAgICAgICAgWyUgSUYgRGF0YS5TZXJ2aWNlSUQgPT0gJ05FVycgJV0KIyAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBZGQgU2VydmljZSIpIHwgaHRtbCAlXTwvaDI+CiMgICAgICAgICAgICBbJSBFTFNFICVdCiMgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRWRpdCBTZXJ2aWNlIikgfCBodG1sICVdPC9oMj4KIyAgICAgICAgICAgIFslIEVORCAlXQojICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KIwojICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiMgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KIyAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VydmljZVNhdmUiLz4KIyAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2VydmljZUlEIiB2YWx1ZT0iWyUgRGF0YS5TZXJ2aWNlSUQgfCBodG1sICVdIi8+CiMgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuU2VydmljZUlEICE9ICdORVcnICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb250aW51ZUFmdGVyU2F2ZSIgaWQ9IkNvbnRpbnVlQWZ0ZXJTYXZlIiB2YWx1ZT0iIi8+CiMgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkZvcm1JRCIgdmFsdWU9IlslIERhdGEuRm9ybUlEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlcnZpY2VTYXZlIi8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlNlcnZpY2VJRCIgdmFsdWU9IlslIERhdGEuU2VydmljZUlEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICBbJSBJRiBEYXRhLlNlcnZpY2VJRCAhPSAnTkVXJyAlXQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ29udGludWVBZnRlclNhdmUiIGlkPSJDb250aW51ZUFmdGVyU2F2ZSIgdmFsdWU9IiIvPgogICAgICAgICAgICBbJSBFTkQgJV0KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5TZXJ2aWNlSUQgPT0gJ05FVycgJV0KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBZGQgU2VydmljZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICBbJSBFTFNFICVdCiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRWRpdCBTZXJ2aWNlIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KIyBFTyBTZXJ2aWNlQ2F0YWxvZwoKICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOYW1lIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIlNlcnZpY2UiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5hbWUiIGlkPSJOYW1lIiB2YWx1ZT0iWyUgRGF0YS5OYW1lU2hvcnQgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5OYW1lSW52YWxpZCB8IGh0bWwgJV0iIG1heGxlbmd0aD0iMjAwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIiA+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuTG9uZ05hbWUgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiID48cD5bJSBUcmFuc2xhdGUoIlNlcnZpY2UgbmFtZSBtYXhpbXVtIGxlbmd0aCBpcyAyMDAgY2hhcmFjdGVycyAod2l0aCBTdWItc2VydmljZSkuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSIgPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlBhcmVudElEIj5bJSBUcmFuc2xhdGUoIlN1Yi1zZXJ2aWNlIG9mIikgfCBodG1sICVdOiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlBhcmVudE9wdGlvblN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKIyMgLS0tCiMjIElUU01Db3JlCiMjIC0tLQojICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVHlwZUlEIj5bJSBUcmFuc2xhdGUoIlR5cGUiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5UeXBlT3B0aW9uU3RyZyAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiMKIyAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNyaXRpY2FsaXR5Ij5bJSBUcmFuc2xhdGUoIkNyaXRpY2FsaXR5IikgfCBodG1sICVdOiA8L2xhYmVsPgojICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgojICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3JpdGljYWxpdHlPcHRpb25TdHJnICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KIyMgLS0tCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlRpY2tldFR5cGVJRHMiPlslIFRyYW5zbGF0ZSgiU2VydmljZSBkZXBlbmRzIG9uIHRoZSBmb2xsb3dpbmcgdGlja2V0IHR5cGVzIikgfCBodG1sICVdOiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlRpY2tldFR5cGVPcHRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEZXN0UXVldWVJRCI+WyUgVHJhbnNsYXRlKCJUaWNrZXQgZGVzdGluYXRpb24gcXVldWUiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVGlja2V0UXVldWVPcHRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkN1c3RvbWVyRGVmYXVsdFNlcnZpY2UiPlslIFRyYW5zbGF0ZSgiQ3VzdG9tZXIgZGVmYXVsdCBzZXJ2aWNlIikgfCBodG1sICVdOiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IkN1c3RvbWVyRGVmYXVsdFNlcnZpY2UiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRvZ2dsZSBhY3RpdmUgc3RhdGUgZm9yICVzIiwgRGF0YS5OYW1lKSB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLlNlcnZpY2VJRCB8IGh0bWwgJV0iIFslIERhdGEuQ3VzdG9tZXJTZXJ2aWNlQ2hlY2tlZCB8IGh0bWwgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJDcml0aWNhbGl0eSI+WyUgVHJhbnNsYXRlKCJDcml0aWNhbGl0eSIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Dcml0aWNhbGl0eU9wdGlvblN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IktleXdvcmRzIj5bJSBUcmFuc2xhdGUoIktleXdvcmRzIikgfCBodG1sICVdOiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iS2V5d29yZHMiIGlkPSJLZXl3b3JkcyIgdmFsdWU9IlslIERhdGEuS2V5d29yZHMgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIG1heGxlbmd0aD0iMjUwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3cgUm93X0R5bmFtaWNGaWVsZF9bJSBEYXRhLk5hbWUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFiZWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGQiKSAlXQojIEVPIFNlcnZpY2VDYXRhbG9nCgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJWYWxpZElEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIlZhbGlkaXR5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsaWRPcHRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJDb21tZW50Ij5bJSBUcmFuc2xhdGUoIkNvbW1lbnQiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJDb21tZW50IiBpZD0iQ29tbWVudCIgdmFsdWU9IlslIERhdGEuQ29tbWVudCB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgbWF4bGVuZ3RoPSIyNTAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkl0ZW0iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbnB1dEtleSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKERhdGEuS2V5KSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBpZD0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuU2VsZWN0ZWRJRCB8IGh0bWwgJV0iIGNsYXNzPSJXMjVwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5wdXRLZXkiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbnB1dCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBpZD0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuU2VsZWN0ZWRJRCB8IGh0bWwgJV0iIGNsYXNzPSJXMjVwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZShEYXRhLkRlc2MpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIklucHV0IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiVGV4dEFyZWEiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdOiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbmFtZT0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgaWQ9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIHJvd3M9IlslIERhdGEuUm93cyB8IGh0bWwgJV0iIGNvbHM9IlslIERhdGEuQ29scyB8IGh0bWwgJV0iPlslIERhdGEuU2VsZWN0ZWRJRCB8IGh0bWwgJV08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZShEYXRhLkRlc2MpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRleHRBcmVhIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3B0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoRGF0YS5LZXkpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZShEYXRhLkRlc2MpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk9wdGlvbiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlVwbG9hZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKERhdGEuS2V5KSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgaWQ9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIHR5cGU9ImZpbGUiIHNpemU9IjMwIiBjbGFzcz0iZml4ZWQiLz48YnIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIj5bJSBEYXRhLkZpbGVuYW1lIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlVwbG9hZCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlBhc3N3b3JkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoRGF0YS5LZXkpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InBhc3N3b3JkIiBjbGFzcz0iVzI1cGMiIG5hbWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGlkPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiB2YWx1ZT0iIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFzc3dvcmQiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSXRlbSIpICVdCgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUb2dnbGUgdGhpcyB3aWRnZXQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlNlcnZpY2UgRGVzY3JpcHRpb24iKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzID0iU2VydmljZUxhbmd1YWdlQ29udGFpbmVyIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VydmljZUxhbmd1YWdlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU2VydmljZUxhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIFslIElGICFEYXRhLkxhbmd1YWdlICVdIENvbGxhcHNlZCBbJSBFTkQgJV0gIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRvZ2dsZSB0aGlzIHdpZGdldCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9IlRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuTGFuZ3VhZ2UgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTGFuZ3VhZ2UpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ildhcm5pbmciPidbJSBEYXRhLkxhbmd1YWdlSUQgfCBodG1sICVdJyAmbWRhc2g7IFslIFRyYW5zbGF0ZSgiVGhpcyBsYW5ndWFnZSBpcyBub3QgcHJlc2VudCBvciBlbmFibGVkIG9uIHRoZSBzeXN0ZW0uIFRoaXMgc2VydmljZSBkZXNjcmlwdGlvbiBjb3VsZCBiZSBkZWxldGVkIGlmIGl0IGlzIG5vdCBuZWVkZWQgYW55bW9yZS4iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VydmljZUxhbmd1YWdlUmVtb3ZlQnV0dG9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQWRkaXRpb25hbEluZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHZhbHVlPSJSZW1vdmUgTGFuZ3VhZ2UiIGNsYXNzPSJSZW1vdmVCdXR0b24gTGFuZ3VhZ2VSZW1vdmUiIGlkPSJbJSBEYXRhLkxhbmd1YWdlSUQgfCBodG1sICVdX0xhbmd1YWdlX1JlbW92ZSIgaHJlZj0iIiBuYW1lPSJEYXRhLkxhbmd1YWdlSURfTGFuZ3VhZ2VfUmVtb3ZlIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUgU2VydmljZSBEZXNjcmlwdGlvbiBMYW5ndWFnZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VydmljZUxhbmd1YWdlUmVtb3ZlQnV0dG9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTGFuZ3VhZ2VJRCIgY2xhc3M9Ikxhbmd1YWdlSUQiIHZhbHVlPSJbJSBEYXRhLkxhbmd1YWdlSUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJbJSBEYXRhLkxhbmd1YWdlSUQgfCBodG1sICVdX0Rlc2NyaXB0aW9uU2hvcnQiIGlkPSJbJSBEYXRhLkxhbmd1YWdlSUQgfCBodG1sICVdX0xhYmVsX0Rlc2NyaXB0aW9uU2hvcnQiIGNsYXNzPSJNYW5kYXRvcnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiAoc2hvcnQpIikgfCBodG1sICVdOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iWyUgRGF0YS5MYW5ndWFnZUlEIHwgaHRtbCAlXV9EZXNjcmlwdGlvblNob3J0IiBpZD0iWyUgRGF0YS5MYW5ndWFnZUlEIHwgaHRtbCAlXV9EZXNjcmlwdGlvblNob3J0IiB2YWx1ZT0iWyUgRGF0YS5EZXNjcmlwdGlvblNob3J0IHwgaHRtbCAlXSIgY2xhc3M9Ilc3NXBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuRGVzY3JpcHRpb25TaG9ydFNlcnZlckVycm9yIHwgaHRtbCAlXSIgbWF4bGVuZ3RoPSIyMDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJbJSBEYXRhLkxhbmd1YWdlSUQgfCBodG1sICVdX0Rlc2NyaXB0aW9uU2hvcnRFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlslIERhdGEuTGFuZ3VhZ2VJRCB8IGh0bWwgJV1fRGVzY3JpcHRpb25TaG9ydFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuTGFuZ3VhZ2VJRCB8IGh0bWwgJV1fRGVzY3JpcHRpb25Mb25nIiBpZD0iWyUgRGF0YS5MYW5ndWFnZUlEIHwgaHRtbCAlXV9MYWJlbF9EZXNjcmlwdGlvbkxvbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRGVzY3JpcHRpb24gKGxvbmcpIikgfCBodG1sICVdOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJpY2hUZXh0RmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJbJSBEYXRhLkxhbmd1YWdlSUQgfCBodG1sICVdX0Rlc2NyaXB0aW9uTG9uZyIgaWQ9IlslIERhdGEuTGFuZ3VhZ2VJRCB8IGh0bWwgJV1fRGVzY3JpcHRpb25Mb25nIiBjbGFzcz0iUmljaFRleHQiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRlc2NyaXB0aW9uIChsb25nKSIpIHwgaHRtbCAlXSIgcm93cz0iMTAiIGNvbHM9IlslIENvbmZpZygiVGlja2V0OjpGcm9udGVuZDo6VGV4dEFyZWFOb3RlIikgfCBodG1sICVdIj5bJSBEYXRhLkRlc2NyaXB0aW9uTG9uZyB8IGh0bWwgJV08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZXJ2aWNlTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIaWRkZW4gVGVtcGxhdGUgU2VydmljZUxhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRvZ2dsZSB0aGlzIHdpZGdldCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9IlRpdGxlIj48L2gyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBZGRpdGlvbmFsSW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgdmFsdWU9IlJlbW92ZSBMYW5ndWFnZSIgY2xhc3M9IlJlbW92ZUJ1dHRvbiBMYW5ndWFnZVJlbW92ZSIgaWQ9IlRlbXBsYXRlX0xhbmd1YWdlX1JlbW92ZSIgaHJlZj0iIiBuYW1lPSJUZW1wbGF0ZV9MYW5ndWFnZV9SZW1vdmUiPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSBTZXJ2aWNlIERlc2NyaXB0aW9uIExhbmd1YWdlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IiIgY2xhc3M9Ikxhbmd1YWdlSUQiIHZhbHVlPSIiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlRlbXBsYXRlX0Rlc2NyaXB0aW9uU2hvcnQiIGlkPSJUZW1wbGF0ZV9MYWJlbF9EZXNjcmlwdGlvblNob3J0IiBjbGFzcz0iTWFuZGF0b3J5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRGVzY3JpcHRpb24gKHNob3J0KSIpIHwgaHRtbCAlXToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlRlbXBsYXRlX0Rlc2NyaXB0aW9uU2hvcnQiIGlkPSJUZW1wbGF0ZV9EZXNjcmlwdGlvblNob3J0IiB2YWx1ZT0iIiBjbGFzcz0iVzc1cGMiIG1heGxlbmd0aD0iMjAwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVGVtcGxhdGVfRGVzY3JpcHRpb25TaG9ydEVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUZW1wbGF0ZV9EZXNjcmlwdGlvbkxvbmciIGlkPSJUZW1wbGF0ZV9MYWJlbF9EZXNjcmlwdGlvbkxvbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRGVzY3JpcHRpb24gKGxvbmcpIikgfCBodG1sICVdOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJpY2hUZXh0RmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBpZD0iVGVtcGxhdGVfRGVzY3JpcHRpb25Mb25nIiBjbGFzcz0iIiBuYW1lPSJUZW1wbGF0ZV9EZXNjcmlwdGlvbkxvbmciIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRlc2NyaXB0aW9uIChsb25nKSIpIHwgaHRtbCAlXSIgcm93cz0iMTUiIGNvbHM9IlslIENvbmZpZygiVGlja2V0OjpGcm9udGVuZDo6VGV4dEFyZWFOb3RlIikgfCBodG1sICVdIj48L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRlbXBsYXRlX0Rlc2NyaXB0aW9uTG9uZ0Vycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTGFuZ3VhZ2VPcHRpb25zIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ikxhbmd1YWdlIj5bJSBUcmFuc2xhdGUoIkFkZCBuZXcgc2VydmljZSBkZXNjcmlwdGlvbiBsYW5ndWFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhbmd1YWdlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYW5ndWFnZU9yaWdTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJMYW5ndWFnZU9wdGlvbnMiKSAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTYXZlIENoYW5nZXMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiMgRU8gU2VydmljZUNhdGFsb2cKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLlNlcnZpY2VJRCAhPSAnTkVXJyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdEFuZENvbnRpbnVlIiB0eXBlPSJidXR0b24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSBhbmQgZmluaXNoIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwojICAgICAgICAgICAgICAgIDwvZm9ybT4KIyAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICA8L2Rpdj4KIyBFTyBTZXJ2aWNlQ2F0YWxvZwpbJSBSZW5kZXJCbG9ja0VuZCgiU2VydmljZUVkaXQiKSAlXQojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwojICAgICAgICA8L2Rpdj4KIyBFTyBTZXJ2aWNlQ2F0YWxvZwoKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VydmljZVJlZmVyZW5jZSIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgQ29sbGFwc2VkIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRvZ2dsZSB0aGlzIHdpZGdldCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIk9wdGlvbiBSZWZlcmVuY2UiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJZb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIG9wdGlvbnMiKSB8IGh0bWwgJV06PC9wPgogICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgIDxkdD5bJSBUcmFuc2xhdGUoIlNlcnZpY2UgZGVwZW5kcyBvbiB0aGUgZm9sbG93aW5nIHRpY2tldCB0eXBlcyIpIHwgaHRtbCAlXTo8L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCdXaXRoaW4gdGhlIFNlcnZpY2VDYXRhbG9ndWUgdGlsZSBpbiB0aGUgY3VzdG9tZXIgZGFzaGJvYXJkLCBpdCBpcyBwb3NzaWJsZSB0byBzaG93IHRpY2tldCB0eXBlcyBmb3IgcHJlY29uZmlndXJlZCB0aWNrZXQgY3JlYXRpb24gaW5zaWRlIHRoZSBzZXJ2aWNlIGRlc2NyaXB0aW9uLiBGdXJ0aGVybW9yZSwgaXQgaXMgcG9zc2libGUgdG8gcmVzdHJpY3QgdGhlIHNlcnZpY2VzIGZvciBvdGhlciBzY3JlZW5zIHVzaW5nIHRoZSB0aWNrZXQgdHlwZXMgc2V0IGhlcmUuIElmIHlvdSB3aXNoIHRvIGRvIHRoaXMsIHBsZWFzZSBhY3RpdmF0ZSB0aGUgb3B0aW9ucyAiU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHMiIGFuZCAiU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHM6Ok9wdGlvbnMiIGluIHRoZSBPVE9CTyBzeXN0ZW0gY29uZmlndXJhdGlvbi4gVGhlIHJlc3RyaWN0aW9uIGlzIG1hZGUgdmlhIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIEFDTHMsIHdoaWNoIGNhbiBiZSB2aWV3ZWQgdW5kZXIgIkFkbWluIC0+IEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0wpIi4gSWYgbmVjZXNzYXJ5LCBwbGVhc2UgYWRqdXN0IHRoZSBvcHRpb24gIlNlcnZpY2VDYXRhbG9nOjpDcmVhdGVUeXBlU2VydmljZVJlbGF0ZWRBY2xzOjpPcHRpb25zIiBhY2NvcmRpbmcgdG8geW91ciByZXF1aXJlbWVudHMuJykgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgPGR0PlslIFRyYW5zbGF0ZSgiVGlja2V0IGRlc3RpbmF0aW9uIHF1ZXVlIikgfCBodG1sICVdOjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoJ0lmIHdlIHdvcmsgc2VydmljZS1iYXNlZCwgd2UgZG8gbm90IHdhbnQgdG8gb2ZmZXIgdGhlIGN1c3RvbWVyIGEgY2hvaWNlIG9mIHF1ZXVlcyBpbiB0aGUgY3VzdG9tZXIgcG9ydGFsIHdoZW4gY3JlYXRpbmcgYSB0aWNrZXQsIGJ1dCBkZWNpZGUgb24gdGhlIGJhc2lzIG9mIHRoZSBzZXJ2aWNlIGludG8gd2hpY2ggcXVldWUgKG9yIHdoaWNoIHRlYW0gb2YgYWdlbnRzKSB0aGUgdGlja2V0IHNob3VsZCBiZSBwcm9jZXNzZWQgZmlyc3QuIEluIG9yZGVyIHRvIHVzZSB0aGlzIG9wdGlvbiBzZW5zaWJseSwgcGxlYXNlIGRlYWN0aXZhdGUgdGhlIG9wdGlvbiAiVGlja2V0OjpGcm9udGVuZDo6Q3VzdG9tZXJUaWNrZXRNZXNzYWdlIyMjUXVldWUiIGFuZCBzZXQgYSBzZW5zaWJsZSBkZWZhdWx0IHF1ZXVlIGluIHRoZSBvcHRpb24gIlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0TWVzc2FnZSMjI1F1ZXVlRGVmYXVsdCIuIEFzIHNvb24gYXMgeW91IHNldCBhICJUaWNrZXQgZGVzdGluYXRpb24gcXVldWUiIGhlcmUgaW4gdGhlIHNlcnZpY2UsIHRoZSB0aWNrZXQgd2lsbCBpbW1lZGlhdGVseSBiZSBjcmVhdGVkIGluIHRoaXMgcXVldWUuIElmIHRoZSBmaWVsZCByZW1haW5zIGVtcHR5LCB0aGUgZGVmYXVsdCBxdWV1ZSBjb25maWd1cmVkIGFib3ZlIHdpbGwgYmUgdXNlZC4nKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICA8ZHQ+WyUgVHJhbnNsYXRlKCJDdXN0b21lciBkZWZhdWx0IHNlcnZpY2UiKSB8IGh0bWwgJV06PC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSWYgeW91IGRvIG5vdCBhc3NpZ24gc2VydmljZXMgdG8gY3VzdG9tZXJzIG9yIGNvbXBhbmllcyBpbmRpdmlkdWFsbHksIGJ1dCBhbGwgc2VydmljZXMgYXJlIGluaXRpYWxseSBvZmZlcmVkIHRvIHlvdXIgY3VzdG9tZXJzIGZvciBzZWxlY3Rpb24sIHRoZSBzdGVwIG9mIHJlbGVhc2luZyBlYWNoIHNlcnZpY2UgYXMgYSBcImRlZmF1bHRcIiBzZXJ2aWNlIHVuZGVyIFwiQWRtaW4gLT4gQ3VzdG9tZXIgdXNlciA8LT4gU2VydmljZVwiIChvciBcIkN1c3RvbWVyIDwtPiBTZXJ2aWNlXCIpIGNhbiBiZSBieXBhc3NlZCBoZXJlLiBPZiBjb3Vyc2UsIGluIHRoZSBuZXh0IHN0ZXAgaXQgaXMgcG9zc2libGUgdG8gcmVzdHJpY3QgdGhlIHNlcnZpY2VzIHZpYSBBQ0xzLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgICAgIDxkdD5bJSBUcmFuc2xhdGUoIkNyaXRpY2FsaXR5IikgfCBodG1sICVdOjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkhlcmUsIHRoZXJlIGlzIHRoZSBwb3NzaWJpbGl0eSB0byBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZSB0aGUgY29ycmVjdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIGJhY2tncm91bmQgYmFzZWQgb24gdGhlIGR5bmFtaWMgZmllbGQgXCJJVFNNQ3JpdGljYWxpdHlcIiBhbmQgXCJJVFNNSW1wYWN0XCIuIFBsZWFzZSBhY3RpdmF0ZSB0aGUgb3B0aW9uIFwiVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyM5NzAwLVNldER5bmFtaWNGaWVsZENyaXRpY2FsaXR5RnJvbVNlcnZpY2VcIiBhbmQgdGhlIG9wdGlvbiBcIlRpY2tldDo6RXZlbnRNb2R1bGVQb3N0IyMjOTgwMC1TZXRQcmlvcml0eUZyb21Dcml0aWNhbGl0eUFuZEltcGFjdE1hdHJpeFwiLiBJbiB0aGUgbmV4dCBzdGVwLCB5b3UgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdXNpbmcgXCJBZG1pbiAtPiBDcml0aWNhbGl0eSDihpQgSW1wYWN0IOKGlCBQcmlvcml0eVwiIHRvIHNldCB0aGUgcHJpb3JpdHkgdXNpbmcgYSBtYXRyaXguIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgPGR0PlslIFRyYW5zbGF0ZSgiS2V5d29yZHMiKSB8IGh0bWwgJV06PC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiS2V5d29yZHMgdG8gZmFjaWxpdGF0ZSB0aGUgc2VhcmNoIGZvciBzZXJ2aWNlcyB3aXRoaW4gdGhlIHNlcnZpY2UgY2F0YWxvZy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICA8ZHQ+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIERlc2NyaXB0aW9uIikgfCBodG1sICVdOjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlNlcnZpY2UgZGVzY3JpcHRpb25zIChzaG9ydCAmIGxvbmcpIHNwZWNpZmllZCBieSBVc2VyIExhbmd1YWdlLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgICAgIDxkdD5bJSBUcmFuc2xhdGUoIkRlc2NyaXB0aW9uIChzaG9ydCkiKSB8IGh0bWwgJV06PC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiU2hvcnQgc3VtbWFyeSBvZiB0aGUgc2VydmljZSwgbWFpbmx5IHVzZWQgaW4gdGhlIEN1c3RvbWVyRGFzaGJvYXJkLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgICAgIDxkdD5bJSBUcmFuc2xhdGUoIkRlc2NyaXB0aW9uIChsb25nKSIpIHwgaHRtbCAlXTo8L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiBvZiB0aGUgc2VydmljZS4gU2NyZWVuc2hvdHMgYW5kIHRhYmxlcyBhcmUgYWxzbyBhbGxvd2VkLiBQbGVhc2UgZW5zdXJlIHRoZSBjb3JyZWN0IHdpZHRoIG9mIHRoZSBpbWFnZSBmb3Igc2NyZWVuc2hvdHMuIFRoaXMgY2FuIGJlIGFkanVzdGVkIGluIHRoZSBja2VkaXRvciBhZnRlciB1cGxvYWRpbmcgdGhlIHNjcmVlbnNob3QuIEEgd2lkdGggb2YgNjAwcHggaGFzIHByb3ZlbiB0byBiZSB1c2VmdWwgb3IgeW91IGNhbiBjb25maWd1cmUgYSBcIm1heC13aWR0aFwiIG9mIDk1JSB1bmRlciBBZHZhbmNlZC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICA8ZHQ+WyUgVHJhbnNsYXRlKCJBZGQgbW9yZSBzZXJ2aWNlIGNhdGFsb2cgZmllbGRzIikgfCBodG1sICVdOjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIllvdSBoYXZlIHRoZSBvcHRpb24gb2YgYWRkaW5nIGZ1cnRoZXIgZmllbGRzIGhlcmUgaW4gdGhlIHNlcnZpY2UgY2F0YWxvZyBhdCBhbnkgdGltZS4gVG8gZG8gdGhpcywgcGxlYXNlIGdvIHRvIFwiQWRtaW4gLT4gRHluYW1pY0ZpZWxkc1wiIGFuZCBjcmVhdGUgdGhlIG5ldyBmaWVsZCBvZiB0aGUgb2JqZWN0IHR5cGUgXCJTZXJ2aWNlXCIuIFlvdSBjYW4gdGhlbiBhY3RpdmF0ZSB0aGUgZmllbGQgZm9yIHRoZSBjdXN0b21lciBkYXNoYm9hcmQgdW5kZXIgXCJBZG1pbiAtPiBEeW5hbWljRmllbGQgU2NyZWVuc1wiIGJ5IGFzc2lnbmluZyBpdCB1bmRlciBcIkN1c3RvbWVyRGFzaGJvYXJkVGlsZSBTZXJ2aWNlQ2F0YWxvZ1wiLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZXJ2aWNlUmVmZXJlbmNlIikgJV0KIyBFTyBTZXJ2aWNlQ2F0YWxvZwogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXciKSAlXQo=</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AdminSLA.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBlNDRjMThhZWE5YWJjMTI1ZmRkZjljZWVlZDIwNGRiNGZhYjI5MGUwIC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pblNMQS50dAojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBlNDRjMThhZWE5YWJjMTI1ZmRkZjljZWVlZDIwNGRiNGZhYjI5MGUwIC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pblNMQS50dAojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlldyIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgogICAgPGgxIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlNMQSBNYW5hZ2VtZW50IikgfCBodG1sICVdPC9oMT4KCiAgICBbJSBCcmVhZGNydW1iUGF0aCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGUoJ1NMQSBNYW5hZ2VtZW50JyksCiAgICAgICAgICAgICAgICBMaW5rID0+IEVudigiQWN0aW9uIiksCiAgICAgICAgICAgIH0sCiAgICAgICAgXQogICAgJV0KCiAgICBbJSBJRiBEYXRhLlNMQUlEICVdCiAgICAgICAgWyUgVVNFIEVkaXRUaXRsZSA9IFN0cmluZyhUcmFuc2xhdGUoIkVkaXQgU0xBIikpICVdCiAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7IE5hbWUgPT4gRWRpdFRpdGxlLmFwcGVuZCggJzogJywgRGF0YS5TTEFOYW1lICkgfSkgJV0KICAgIFslIEVMU0lGIERhdGEuU3ViYWN0aW9uID09ICJTTEFFZGl0IiAgJV0KICAgICAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsgTmFtZSA9PiBUcmFuc2xhdGUoIkFkZCBTTEEiKSx9KSAlXQogICAgWyUgRU5EICVdCgogICAgWyUgSU5DTFVERSAiQnJlYWRjcnVtYi50dCIgUGF0aCA9IEJyZWFkY3J1bWJQYXRoICVdCgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmNsdWRlSW52YWxpZCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkZpbHRlciBieSB2YWxpZCBzdGF0ZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IkluY2x1ZGVJbnZhbGlkIiBuYW1lPSJJbmNsdWRlSW52YWxpZCIgdmFsdWU9IjEiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkluY2x1ZGUgaW52YWxpZCBTTEFzIikgfCBodG1sICVdIiBbJSBEYXRhLkluY2x1ZGVJbnZhbGlkQ2hlY2tlZCB8IGh0bWwgJV0vPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iSW5jbHVkZUludmFsaWQiPlslIFRyYW5zbGF0ZSgiSW5jbHVkZSBpbnZhbGlkIFNMQXMiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluY2x1ZGVJbnZhbGlkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uTGlzdCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkFjdGlvbnMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uT3ZlcnZpZXciKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT5bJSBUcmFuc2xhdGUoIkdvIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uT3ZlcnZpZXciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uQWRkIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNMQUVkaXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGkgY2xhc3M9ImZhIGZhLXBsdXMtc3F1YXJlIj48L2k+WyUgVHJhbnNsYXRlKCJBZGQgU0xBIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkFjdGlvbkFkZCIpICVdCgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25MaXN0IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRmlsdGVyIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPjxsYWJlbCBmb3I9IkZpbHRlclNMQXMiPlslIFRyYW5zbGF0ZSgiRmlsdGVyIGZvciBTTEFzIikgfCBodG1sICVdPC9sYWJlbD48L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IkZpbHRlclNMQXMiIGNsYXNzPSJGaWx0ZXJCb3giIHBsYWNlaG9sZGVyPSJbJSBUcmFuc2xhdGUoIkp1c3Qgc3RhcnQgdHlwaW5nIHRvIGZpbHRlci4uLiIpIHwgaHRtbCAlXSIgbmFtZT0iRmlsdGVyU0xBcyIgdmFsdWU9IiIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRmlsdGVyIGZvciBTTEFzIikgfCBodG1sICVdIj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGaWx0ZXIiKSAlXQojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbXBvcnRFeHBvcnRXaWRnZXQiKSAlXQogICAgICAgIDxkaXYgY2xhc3M9J1dpZGdldFNpbXBsZScgaWQ9J1NMQUltcG9ydEV4cG9ydFdpZGdldCc+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9J0hlYWRlcic+CiAgICAgICAgICAgICAgICA8aDEgY2xhc3M9IkludmlzaWJsZVRleHQiPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSW1wb3J0IC8gRXhwb3J0IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2gxPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoID0gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGUoJ0ltcG9ydCAvIEV4cG9ydCcpLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICVdCgogICAgICAgICAgICBbJSBJTkNMVURFICJCcmVhZGNydW1iLnR0IiBQYXRoID0gQnJlYWRjcnVtYlBhdGggJV0KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NvbnRlbnQnPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9J0ZpZWxkRXhwbGFuYXRpb24nPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgnSGVyZSB5b3UgY2FuIHVwbG9hZCBhIGNvbmZpZ3VyYXRpb24gZmlsZSB0byBpbXBvcnQgU0xBcyB0byB5b3VyIHN5c3RlbS4gVGhlIGZpbGUgbmVlZHMgdG8gYmUgaW4gLnltbCBmb3JtYXQgYXMgZXhwb3J0ZWQgYnkgU0xBIG1hbmFnZW1lbnQgbW9kdWxlLicpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSdBY3Rpb25MaXN0IFNwYWNpbmdUb3AnPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSdbJSBFbnYoIkNHSUhhbmRsZSIpICVdJyBtZXRob2Q9J3Bvc3QnIGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRhdGEnIGNsYXNzPSdWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J0NoYWxsZW5nZVRva2VuJyB2YWx1ZT1bJSBFbnYoIlVzZXJDaGFsbGVuZ2VUb2tlbiIpIHwgSlNPTiAlXT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J0FjdGlvbicgdmFsdWU9J0FkbWluU0xBSW1wb3J0RXhwb3J0Jy8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdTdWJhY3Rpb24nIHZhbHVlPSdJbXBvcnQnLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSdGaWxlVXBsb2FkJyBpZD0nRmlsZVVwbG9hZCcgdHlwZT0nZmlsZScgc2l6ZT0nMTgnIGNsYXNzPSdGaXhlZCBXMTAwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5GaWxlVXBsb2FkSW52YWxpZCB8IGh0bWwgJV0nLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9J0ZpbGVVcGxvYWRFcnJvcicgY2xhc3M9J1Rvb2x0aXBFcnJvck1lc3NhZ2UnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQuJykgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSdGaWxlVXBsb2FkU2VydmVyRXJyb3InIGNsYXNzPSdUb29sdGlwRXJyb3JNZXNzYWdlJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBUcmFuc2xhdGUoJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQuJykgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9J1NwYWNpbmdUb3AnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdjaGVja2JveCcgaWQ9J092ZXJ3cml0ZUV4aXN0aW5nRW50aXRpZXNFeGFtcGxlJyBuYW1lPSdPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzJyB2YWx1ZT0nMScvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9J092ZXJ3cml0ZUV4aXN0aW5nRW50aXRpZXNFeGFtcGxlJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCdPdmVyd3JpdGUgZXhpc3RpbmcgZW50aXRpZXMnKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9J0NhbGxGb3JBY3Rpb24gRnVsbHNpemUgQ2VudGVyIFNwYWNpbmdUb3AnIGlkPSdTTEFJbXBvcnQnIHR5cGU9J3N1Ym1pdCc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGkgY2xhc3M9J2ZhIGZhLXVwbG9hZCc+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoJ1NMQXMgSW1wb3J0JykgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0nWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluU0xBSW1wb3J0RXhwb3J0O1N1YmFjdGlvbj1FeHBvcnQnIGlkPSdTTEFFeHBvcnQnIGNsYXNzPSdDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlcic+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0nZmEgZmEtZG93bmxvYWQnPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoJ1NMQXMgRXhwb3J0JykgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbXBvcnRFeHBvcnRXaWRnZXQiKSAlXQojIEVPIFNMQUNhdGFsb2cKICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TGlzdCIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJMaXN0IikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIiBpZD0iU0xBcyI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJTTEEiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiU2VydmljZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIlZhbGlkaXR5IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNoYW5nZWQiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJOb0RhdGFGb3VuZE1zZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TGlzdFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBbJSBJRiBEYXRhLlZhbGlkSUQgJiYgRGF0YS5WYWxpZElEICE9IDEgJV1jbGFzcz0iSW52YWxpZCJbJSBFTkQgJV0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1TTEFFZGl0O1NMQUlEPVslIERhdGEuU0xBSUQgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLlNlcnZpY2UgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB0aXRsZT0iWyUgRGF0YS5Db21tZW50IHwgaHRtbCAlXSI+WyUgRGF0YS5Db21tZW50IHwgdHJ1bmNhdGUoMjYpIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgVHJhbnNsYXRlKERhdGEuVmFsaWQpIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5DaGFuZ2VUaW1lIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdMaXN0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJGaWx0ZXJNZXNzYWdlIEhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNiI+WyUgVHJhbnNsYXRlKCJObyBtYXRjaGVzIGZvdW5kLiIpIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdMaXN0IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlNMQUVkaXQiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICBbJSBJRiAhRGF0YS5TTEFJRCAlXQogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWRkIFNMQSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIFslIEVMU0UgJV0KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkVkaXQgU0xBIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTTEFTYXZlIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU0xBSUQiIHZhbHVlPSJbJSBEYXRhLlNMQUlEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuU0xBSUQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ29udGludWVBZnRlclNhdmUiIGlkPSJDb250aW51ZUFmdGVyU2F2ZSIgdmFsdWU9IiIvPgogICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5hbWUiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiU0xBIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iTmFtZSIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLk5hbWVJbnZhbGlkIHwgaHRtbCAlXSIgbWF4bGVuZ3RoPSIyMDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgojIC0tLQojIElUU01Db3JlCiMgLS0tCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlNlcnZpY2VJRHMiPlslIFRyYW5zbGF0ZSgiVHlwZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlR5cGVPcHRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiMgLS0tCgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTZXJ2aWNlSURzIj5bJSBUcmFuc2xhdGUoIlNlcnZpY2UiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZXJ2aWNlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQ2FsZW5kYXIiPlslIFRyYW5zbGF0ZSgiQ2FsZW5kYXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DYWxlbmRhck9wdGlvblN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkZpcnN0UmVzcG9uc2VUaW1lIj5bJSBUcmFuc2xhdGUoIkVzY2FsYXRpb24gLSBmaXJzdCByZXNwb25zZSB0aW1lIikgfCBodG1sICVdIChbJSBUcmFuc2xhdGUoIm1pbnV0ZXMiKSB8IGh0bWwgJV0pOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJGaXJzdFJlc3BvbnNlVGltZSIgaWQ9IkZpcnN0UmVzcG9uc2VUaW1lIiB2YWx1ZT0iWyUgRGF0YS5GaXJzdFJlc3BvbnNlVGltZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBweCBWYWxpZGF0ZV9OdW1iZXIiIG1heGxlbmd0aD0iMTAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkZpcnN0UmVzcG9uc2VUaW1lRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlBsZWFzZSB3cml0ZSBvbmx5IG51bWJlcnMhIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxsYWJlbCBmb3I9IkZpcnN0UmVzcG9uc2VOb3RpZnkiPlslIFRyYW5zbGF0ZSgiTm90aWZ5IGJ5IikgfCBodG1sICVdPC9sYWJlbD4gWyUgRGF0YS5GaXJzdFJlc3BvbnNlTm90aWZ5T3B0aW9uU3RyZyAlXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIjAgPSBubyBlc2NhbGF0aW9uIikgfCBodG1sICVdIC0gMjQgWyUgVHJhbnNsYXRlKCJob3VycyIpIHwgaHRtbCAlXSA9IDE0NDAgWyUgVHJhbnNsYXRlKCJtaW51dGVzIikgfCBodG1sICVdIC0gWyUgVHJhbnNsYXRlKCJPbmx5IGJ1c2luZXNzIGhvdXJzIGFyZSBjb3VudGVkLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVXBkYXRlVGltZSI+WyUgVHJhbnNsYXRlKCJFc2NhbGF0aW9uIC0gdXBkYXRlIHRpbWUiKSB8IGh0bWwgJV0gKFslIFRyYW5zbGF0ZSgibWludXRlcyIpIHwgaHRtbCAlXSk6PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlVwZGF0ZVRpbWUiIGlkPSJVcGRhdGVUaW1lIiB2YWx1ZT0iWyUgRGF0YS5VcGRhdGVUaW1lIHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHB4IFZhbGlkYXRlX051bWJlciIgbWF4bGVuZ3RoPSIxMCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVXBkYXRlVGltZUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJQbGVhc2Ugd3JpdGUgb25seSBudW1iZXJzISIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8bGFiZWwgZm9yPSJVcGRhdGVOb3RpZnkiPlslIFRyYW5zbGF0ZSgiTm90aWZ5IGJ5IikgfCBodG1sICVdPC9sYWJlbD4gWyUgRGF0YS5VcGRhdGVOb3RpZnlPcHRpb25TdHJnICVdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiMCA9IG5vIGVzY2FsYXRpb24iKSB8IGh0bWwgJV0gLSAyNCBbJSBUcmFuc2xhdGUoImhvdXJzIikgfCBodG1sICVdID0gMTQ0MCBbJSBUcmFuc2xhdGUoIm1pbnV0ZXMiKSB8IGh0bWwgJV0gLSBbJSBUcmFuc2xhdGUoIk9ubHkgYnVzaW5lc3MgaG91cnMgYXJlIGNvdW50ZWQuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTb2x1dGlvblRpbWUiPlslIFRyYW5zbGF0ZSgiRXNjYWxhdGlvbiAtIHNvbHV0aW9uIHRpbWUiKSB8IGh0bWwgJV0gKFslIFRyYW5zbGF0ZSgibWludXRlcyIpIHwgaHRtbCAlXSk6PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlNvbHV0aW9uVGltZSIgaWQ9IlNvbHV0aW9uVGltZSIgdmFsdWU9IlslIERhdGEuU29sdXRpb25UaW1lIHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHB4IFZhbGlkYXRlX051bWJlciIgbWF4bGVuZ3RoPSIxMCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iU29sdXRpb25UaW1lRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlBsZWFzZSB3cml0ZSBvbmx5IG51bWJlcnMhIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxsYWJlbCBmb3I9IlNvbHV0aW9uTm90aWZ5Ij5bJSBUcmFuc2xhdGUoIk5vdGlmeSBieSIpIHwgaHRtbCAlXTwvbGFiZWw+IFslIERhdGEuU29sdXRpb25Ob3RpZnlPcHRpb25TdHJnICVdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiMCA9IG5vIGVzY2FsYXRpb24iKSB8IGh0bWwgJV0gLSAyNCBbJSBUcmFuc2xhdGUoImhvdXJzIikgfCBodG1sICVdID0gMTQ0MCBbJSBUcmFuc2xhdGUoIm1pbnV0ZXMiKSB8IGh0bWwgJV0gLSBbJSBUcmFuc2xhdGUoIk9ubHkgYnVzaW5lc3MgaG91cnMgYXJlIGNvdW50ZWQuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiMgLS0tCiMgSVRTTUNvcmUKIyAtLS0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTWluVGltZUJldHdlZW5JbmNpZGVudHMiPlslIFRyYW5zbGF0ZSgiTWluaW11bSBUaW1lIEJldHdlZW4gSW5jaWRlbnRzIikgfCBodG1sICVdIChbJSBUcmFuc2xhdGUoIm1pbnV0ZXMiKSB8IGh0bWwgJV0pOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJNaW5UaW1lQmV0d2VlbkluY2lkZW50cyIgaWQ9Ik1pblRpbWVCZXR3ZWVuSW5jaWRlbnRzIiB2YWx1ZT0iWyUgRGF0YS5NaW5UaW1lQmV0d2VlbkluY2lkZW50cyB8IGh0bWwgJV0iIGNsYXNzPSJXMjVwYyBWYWxpZGF0ZV9OdW1iZXIiIG1heGxlbmd0aD0iMTUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik1pblRpbWVCZXR3ZWVuSW5jaWRlbnRzRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlBsZWFzZSB3cml0ZSBvbmx5IG51bWJlcnMhIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgojIC0tLQoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iVmFsaWRJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbGlkT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQ29tbWVudCI+WyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJDb21tZW50IiBpZD0iQ29tbWVudCIgdmFsdWU9IlslIERhdGEuQ29tbWVudCB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgbWF4bGVuZ3RoPSIyNTAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU0xBSXRlbSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIklucHV0S2V5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoRGF0YS5LZXkpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgaWQ9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLlNlbGVjdGVkSUQgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIklucHV0S2V5IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5wdXQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBpZD0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuU2VsZWN0ZWRJRCB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkRlc2MpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5wdXQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUZXh0QXJlYSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG5hbWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGlkPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiByb3dzPSJbJSBEYXRhLlJvd3MgfCBodG1sICVdIiBjb2xzPSJbJSBEYXRhLkNvbHMgfCBodG1sICVdIj5bJSBEYXRhLlNlbGVjdGVkSUQgfCBodG1sICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5EZXNjKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrRW5kKCJUZXh0QXJlYSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk9wdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKERhdGEuS2V5KSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5PcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5EZXNjKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk9wdGlvbiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlVwbG9hZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKERhdGEuS2V5KSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGlkPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiB0eXBlPSJmaWxlIiBjbGFzcz0iZml4ZWQiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiI+WyUgRGF0YS5GaWxlbmFtZSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJVcGxvYWQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYXNzd29yZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKERhdGEuS2V5KSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBpZD0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgdmFsdWU9IiIgY2xhc3M9Ilc1MHBjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQYXNzd29yZCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJTTEFJdGVtIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLlNMQUlEICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0QW5kQ29udGludWUiIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFByaW1hcnkiIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIGFuZCBmaW5pc2giKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTFNFICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU0xBRWRpdCIpICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlldyIpICVdCg==</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AgentITSMService.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSAgLSBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTVNlcnZpY2UudHQKIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXciKSAlXQo8ZGl2IGNsYXNzPSJNYWluQm94IEFyaWFSb2xlTWFpbiBTcGFjaW5nVG9wIj4KICAgIDxkaXYgY2xhc3M9Ilc3NXBjIFNwYWNpbmdCb3R0b20gQ2VudGVyQm94Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiT3ZlcnZpZXciKSB8IGh0bWwgJV06IFslIFRyYW5zbGF0ZSgiU2VydmljZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50IFNwYWNpbmdCb3R0b20iPgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJTdGF0ZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIikgfCBodG1sICVdPC90aD4KIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQ29tbWVudCIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiAoc2hvcnQpIikgfCBodG1sICVdPC90aD4KIyBFTyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiVHlwZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDcml0aWNhbGl0eSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDaGFuZ2VkIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9Ik1hc3RlckFjdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmxhZyBTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckluY2lTaWduYWwgJV0iIHRpdGxlPSJbJSBEYXRhLlN0YXRlICVdIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGV2ZWxTcGFjZSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJNYXN0ZXJBY3Rpb25MaW5rIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNU2VydmljZVpvb207U2VydmljZUlEPVslIERhdGEuU2VydmljZUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB0aXRsZT0iWyUgRGF0YS5Db21tZW50IHwgaHRtbCAlXSI+WyUgRGF0YS5Db21tZW50IHwgdHJ1bmNhdGUoMTAwKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHRpdGxlPSJbJSBEYXRhLkRlc2NyaXB0aW9uU2hvcnQgfCBodG1sICVdIj5bJSBEYXRhLkRlc2NyaXB0aW9uU2hvcnQgfCB0cnVuY2F0ZSgxMDApIHwgaHRtbCAlXTwvdGQ+CiMgRU8gU2VydmljZUNhdGFsb2cKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBUcmFuc2xhdGUoRGF0YS5UeXBlKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIFRyYW5zbGF0ZShEYXRhLkNyaXRpY2FsaXR5KSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuQ2hhbmdlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3Um93IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlldyIpICVdCg==</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AgentITSMServiceZoom.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSAgLSBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTVNlcnZpY2Vab29tLnR0CiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJIZWFkbGluZSI+CiAgICAgICAgPGRpdiBjbGFzcz0iRmxhZyIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkN1ckluY2lTdGF0ZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlslIERhdGEuQ3VySW5jaVNpZ25hbCB8IGh0bWwgJV0iPjwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8aDEgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VydmljZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiU2VydmljZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5OYW1lIHwgaHRtbCAlXQogICAgICAgIDwvaDE+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlNlcnZpY2UgSW5mb3JtYXRpb24iKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwgVGlnaHQiPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3VycmVudCBpbmNpZGVudCBzdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGbGFnIFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5DdXJJbmNpU2lnbmFsIHwgaHRtbCAlXSI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIERhdGEuQ3JlYXRlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDcmVhdGVkIGJ5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZUJ5TmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJMYXN0IGNoYW5nZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2hhbmdlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTGFzdCBjaGFuZ2VkIGJ5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNoYW5nZUJ5TmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkxpbmtUYWJsZVNpbXBsZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBEb250UHJpbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJMaW5rZWQgT2JqZWN0cyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGlua1RhYmxlU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTGlua1RhYmxlU2ltcGxlIikgJV0KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRyb2xSb3ciPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9ucyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk1lbnVJdGVtIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXVslIERhdGEuTGluayB8IEludGVycG9sYXRlICVdIiBjbGFzcz0iWyUgRGF0YS5NZW51Q2xhc3MgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuRGVzY3JpcHRpb24pIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJNZW51SXRlbSIpICVdCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEJveCBTcGFjaW5nVG9wIEV4cGFuZGVkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkxpZ2h0Um93IEhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+PGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2hvdyBvciBoaWRlIHRoZSBjb250ZW50LiIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiU2VydmljZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQgQXV0b0hlaWdodCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlR5cGUiKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiVHlwZSIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuVHlwZSkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDcml0aWNhbGl0eSIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuQ3JpdGljYWxpdHkpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgojIC0tLQojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwojIC0tLQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRGVzY3JpcHRpb24gKHNob3J0KSIpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiAoc2hvcnQpIikgfCBodG1sICVdOiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5EZXNjcmlwdGlvblNob3J0KSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiAobG9uZykiKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiRGVzY3JpcHRpb24gKGxvbmcpIikgfCBodG1sICVdOiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXBvcHVwcyBtcy1hbGxvdy1wb3B1cHMgYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94IiB3aWR0aD0iMTAwJSIgZnJhbWVib3JkZXI9IjAiIGlkPSJTZXJ2aWNlSURbJSBEYXRhLlNlcnZpY2VJRCB8IGh0bWwgJV0iIG9ubG9hZD0iQ29yZS5BZ2VudC5JVFNNU2VydmljZVpvb20uUmVzaXplSWZyYW1lKHRoaXMpOyIgc3JjPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNU2VydmljZVpvb207U3ViYWN0aW9uPUhUTUxWaWV3O1NlcnZpY2VJRD1bJSBEYXRhLlNlcnZpY2VJRCB8IGh0bWwgJV1bJSBJRiAhQ29uZmlnKCJTZXNzaW9uVXNlQ29va2llIikgJV1bJSBFbnYoIlNlc3Npb25OYW1lIikgfCBodG1sICVdPVslIEVudigiU2Vzc2lvbklEIikgfCBodG1sICVdWyUgRU5EICVdIj48L2lmcmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiMgVG9EbzogTW92ZSB0aGlzIHRvIGEgY3VzdG9tIENTUyB3aGVuIHBvcnRpbmcgaW50byB0aGUgY29yZS4KPHN0eWxlPgogICAgLk1haW5Cb3ggLkNvbnRlbnRDb2x1bW4gLkNvbnRlbnQgPiBmaWVsZHNldC5UYWJsZUxpa2UuRml4ZWRMYWJlbFNtYWxsID4gbGFiZWwgewogICAgICAgIHdpZHRoOiAxNDBweCAhaW1wb3J0YW50OwogICAgfQoKICAgIC5Db250ZW50Q29sdW1uID4gLldpZGdldEJveCA+IC5Db250ZW50ID4gZmllbGRzZXQuVGFibGVMaWtlLkZpeGVkTGFiZWxTbWFsbCA+IC5GaWVsZCwKICAgIC5Db250ZW50Q29sdW1uID4gLldpZGdldEJveCA+IC5Db250ZW50ID4gZmllbGRzZXQuVGFibGVMaWtlLkZpeGVkTGFiZWxTbWFsbCA+IC5Sb3cgPiAuRmllbGQsCiAgICAuQ29udGVudENvbHVtbiA+IC5XaWRnZXRCb3ggPiAuQ29udGVudCA+IGZpZWxkc2V0LlRhYmxlTGlrZS5GaXhlZExhYmVsU21hbGwgPiAuVmFsdWUsCiAgICAuQ29udGVudENvbHVtbiA+IC5XaWRnZXRCb3ggPiAuQ29udGVudCA+IGZpZWxkc2V0LlRhYmxlTGlrZS5GaXhlZExhYmVsU21hbGwgPiAuUm93ID4gLlZhbHVlIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTQwcHggIWltcG9ydGFudDsKICAgIH0KPC9zdHlsZT4KClslIFJlbmRlckJsb2NrU3RhcnQoIlNlcnZpY2VEeW5hbWljRmllbGQiKSAlXQpbJSBJRiBEYXRhLlRpdGxlRmllbGQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHAgdGl0bGU9IlslIERhdGEuVGV4dCB8IGh0bWwgJV0iIHN0eWxlPSJbJSBEYXRhLlN0eWxlIHwgaHRtbCAlXSI+WyUgRGF0YS5UZXh0IHwgaHRtbCAlXTwvcD4KWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXJ2aWNlRHluYW1pY0ZpZWxkTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aXRsZT0iWyUgRGF0YS5UaXRsZSAlXSI+PGEgaHJlZj0iWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iWyUgSUYgRGF0YS5MaW5rUHJldmlldyAlXSBkYXRhLXRyaWdnZXI9ImZsb2F0ZXIiIGRhdGEtZmxvYXRlci11cmw9IlslIERhdGEuTGlua1ByZXZpZXcgfCBJbnRlcnBvbGF0ZSAlXSJbJSBFTkQgJV0gdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJEeW5hbWljRmllbGRMaW5rIj5bJSBEYXRhLlZhbHVlICVdPC9hPjwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlcnZpY2VEeW5hbWljRmllbGRMaW5rIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VydmljZUR5bmFtaWNGaWVsZFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlICVdIj5bJSBEYXRhLlZhbHVlICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VydmljZUR5bmFtaWNGaWVsZFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiU2VydmljZUR5bmFtaWNGaWVsZCIpICVdCgojIEVPQyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgdGl0bGU9IlslIFRyYW5zbGF0ZSgiQ29tbWVudCIpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdOiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5Db21tZW50KSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlNMQSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBEb250UHJpbnQgU3BhY2luZ1RvcCAgU3BhY2luZ0JvdHRvbU1lZGl1bSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkFzc29jaWF0ZWQgU0xBcyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIlNMQSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQ29tbWVudCIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiVHlwZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQ2hhbmdlZCIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNMQVJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50SVRTTVNMQVpvb207U0xBSUQ9WyUgRGF0YS5TTEFJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk5hbWUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB0aXRsZT0iWyUgRGF0YS5Db21tZW50IHwgaHRtbCAlXSI+WyUgRGF0YS5Db21tZW50IHwgdHJ1bmNhdGUoMTAwKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBUcmFuc2xhdGUoRGF0YS5UeXBlKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLkNoYW5nZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiU0xBUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU0xBIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkxpbmtUYWJsZUNvbXBsZXgiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIFslIERhdGEuTGlua1RhYmxlU3RyZyAlXQogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkxpbmtUYWJsZUNvbXBsZXgiKSAlXQoKICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+Cg==</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AgentITSMSLAZoom.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSAgLSBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTVNMQVpvb20udHQKIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4iPgogICAgPGRpdiBjbGFzcz0iQ2xlYXJMZWZ0Ij48L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkhlYWRsaW5lIj4KICAgICAgICA8aDE+WyUgVHJhbnNsYXRlKCJTTEEiKSB8IGh0bWwgJV06IFslIERhdGEuTmFtZSB8IGh0bWwgJV08L2gxPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJMYXN0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNob3cgb3IgaGlkZSB0aGUgY29udGVudCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiU0xBIEluZm9ybWF0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIFRpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIERhdGEuQ3JlYXRlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDcmVhdGVkIGJ5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZUJ5TmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJMYXN0IGNoYW5nZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2hhbmdlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTGFzdCBjaGFuZ2VkIGJ5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNoYW5nZUJ5TmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250cm9sUm93Ij4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbnMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNZW51SXRlbSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1bJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSIgY2xhc3M9IlslIERhdGEuTWVudUNsYXNzIHwgaHRtbCAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkRlc2NyaXB0aW9uKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiTWVudUl0ZW0iKSAlXQogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRCb3ggU3BhY2luZ1RvcCBFeHBhbmRlZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJMaWdodFJvdyBIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPjxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNob3cgb3IgaGlkZSB0aGUgY29udGVudC4iKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlNMQSIpIHwgaHRtbCAlXTogWyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQgQXV0b0hlaWdodCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlR5cGUiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLlR5cGUpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ2FsZW5kYXIiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2FsZW5kYXJOYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiRmlyc3QgUmVzcG9uc2UgVGltZSIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaXJzdFJlc3BvbnNlVGltZSB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKCJtaW51dGVzIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJVcGRhdGUgVGltZSIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5VcGRhdGVUaW1lIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIm1pbnV0ZXMiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlNvbHV0aW9uIFRpbWUiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU29sdXRpb25UaW1lIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIm1pbnV0ZXMiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIk1pbmltdW0gVGltZSBCZXR3ZWVuIEluY2lkZW50cyIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5NaW5UaW1lQmV0d2VlbkluY2lkZW50cyB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKCJtaW51dGVzIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdOiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbW1lbnQgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXJ2aWNlIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgU3BhY2luZ0JvdHRvbU1lZGl1bSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkFzc29jaWF0ZWQgU2VydmljZXMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJTdGF0ZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiU2VydmljZSIpIHwgaHRtbCAlXTwvdGg+CiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiAoc2hvcnQpIikgfCBodG1sICVdPC90aD4KIyBFTyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIlR5cGUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNyaXRpY2FsaXR5IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDaGFuZ2VkIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VydmljZVJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGbGFnIFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckluY2lTaWduYWwgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ3VySW5jaVN0YXRlKSB8IGh0bWwgJV0iPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01TZXJ2aWNlWm9vbTtTZXJ2aWNlSUQ9WyUgRGF0YS5TZXJ2aWNlSUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB0aXRsZT0iWyUgRGF0YS5Db21tZW50IHwgaHRtbCAlXSI+WyUgRGF0YS5Db21tZW50IHwgdHJ1bmNhdGUoMTAwKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB0aXRsZT0iWyUgRGF0YS5EZXNjcmlwdGlvblNob3J0IHwgaHRtbCAlXSI+WyUgRGF0YS5EZXNjcmlwdGlvblNob3J0IHwgdHJ1bmNhdGUoMTAwKSB8IGh0bWwgJV08L3RkPgojIEVPIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIFRyYW5zbGF0ZShEYXRhLlR5cGUpIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIFRyYW5zbGF0ZShEYXRhLkNyaXRpY2FsaXR5KSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLkNoYW5nZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VydmljZVJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlcnZpY2UiKSAlXQoKICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Custom/Kernel/System/Console/Command/Admin/Service/Add.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBmZjllMjk3YmFmMjg3ZTE2MDcxZDNhYzZhZDdmNmMxM2YxMWFjN2ZhIC0gS2VybmVsL1N5c3RlbS9Db25zb2xlL0NvbW1hbmQvQWRtaW4vU2VydmljZS9BZGQucG0KIyAtLQojICRvcmlnaW46IG90b2JvIC0gZmY5ZTI5N2JhZjI4N2UxNjA3MWQzYWM2YWQ3ZjZjMTNmMTFhYzdmYSAtIEtlcm5lbC9TeXN0ZW0vQ29uc29sZS9Db21tYW5kL0FkbWluL1NlcnZpY2UvQWRkLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpTZXJ2aWNlOjpBZGQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CiMgLS0tCiMgSVRTTUNvcmUKIyAtLS0KdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwojIC0tLQoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6QmFzZUNvbW1hbmQpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnLAojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgJ0tlcm5lbDo6Q29uZmlnJywKIyBFTyBTZXJ2aWNlQ2F0YWxvZwojIC0tLQojIElUU01Db3JlCiMgLS0tCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKIyAtLS0KKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oJ0FkZCBuZXcgc2VydmljZS4nKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ25hbWUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJOYW1lIG9mIHRoZSBuZXcgc2VydmljZS4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uKi9zbXgsCiAgICApOwojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnZGVzY3JpcHRpb24nLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJEZXNjcmlwdGlvbiBvZiB0aGUgbmV3IHNlcnZpY2UuIE5vdGUgdGhhdCB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIGRlc2NyaXB0aW9uIGlzIHRoZSBkZWZhdWx0IGxhbmd1YWdlIG9mIHRoZSBzeXN0ZW0gYW5kIHRoYXQgdGhlIGNvbnRlbnQgaXMgdXNlZCBhcyBib3RoIHNob3J0IGFuZCBsb25nIGRlc2NyaXB0aW9uLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMSwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4qL3NteCwKICAgICk7CiMgRU8gU2VydmljZUNhdGFsb2cKIyAtLS0KIyBJVFNNQ29yZQojIC0tLQogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnY3JpdGljYWxpdHknLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJDcml0aWNhbGl0eSBvZiB0aGUgbmV3IHNlcnZpY2UuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAxLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLiovc214LAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3R5cGUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJUeXBlIG9mIHRoZSBuZXcgc2VydmljZS4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uKi9zbXgsCiAgICApOwojIC0tLQogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAncGFyZW50LW5hbWUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJQYXJlbnQgc2VydmljZSBuYW1lLiBJZiBnaXZlbiwgdGhlIG5ldyBzZXJ2aWNlIHdpbGwgYmUgYSBzdWJzZXJ2aWNlIG9mIHRoZSBnaXZlbiBwYXJlbnQuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLiovc214LAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2NvbW1lbnQnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJDb21tZW50IGZvciB0aGUgbmV3IHNlcnZpY2UuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLiovc214LAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEdldCBhbGwgc2VydmljZXMuCiAgICAkU2VsZi0+e05hbWV9ID0gJFNlbGYtPkdldE9wdGlvbignbmFtZScpOwogICAgbXkgJVNlcnZpY2VMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKS0+U2VydmljZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDAsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgbXkgJVJldmVyc2UgPSByZXZlcnNlICVTZXJ2aWNlTGlzdDsKCiAgICAkU2VsZi0+e1BhcmVudE5hbWV9ID0gJFNlbGYtPkdldE9wdGlvbigncGFyZW50LW5hbWUnKTsKICAgIGlmICggJFNlbGYtPntQYXJlbnROYW1lfSApIHsKCiAgICAgICAgIyBDaGVjayBpZiBQYXJlbnQgc2VydmljZSBleGlzdHMuCiAgICAgICAgJFNlbGYtPntQYXJlbnRJRH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpLT5TZXJ2aWNlTG9va3VwKAogICAgICAgICAgICBOYW1lICAgPT4gJFNlbGYtPntQYXJlbnROYW1lfSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICBkaWUgIlBhcmVudCBzZXJ2aWNlICRTZWxmLT57UGFyZW50TmFtZX0gZG9lcyBub3QgZXhpc3QuXG4iIGlmICEkU2VsZi0+e1BhcmVudElEfTsKCiAgICAgICAgIyBDaGVjayBpZiBQYXJlbnQ6OkNoaWxkIHNlcnZpY2UgY29tYmluYXRpb24gZXhpc3RzLgogICAgICAgIG15ICRTZXJ2aWNlTmFtZSA9ICRTZWxmLT57UGFyZW50TmFtZX0gLiAnOjonIC4gJFNlbGYtPntOYW1lfTsKICAgICAgICBkaWUgIlNlcnZpY2UgJyRTZXJ2aWNlTmFtZScgYWxyZWFkeSBleGlzdHMhXG4iIGlmICRSZXZlcnNleyRTZXJ2aWNlTmFtZX07CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBDaGVjayBpZiBzZXJ2aWNlIGFscmVhZHkgZXhpc3RzLgogICAgICAgIGRpZSAiU2VydmljZSAnJFNlbGYtPntOYW1lfScgYWxyZWFkeSBleGlzdHMhXG4iIGlmICRSZXZlcnNleyAkU2VsZi0+e05hbWV9IH07CiAgICB9CiMgLS0tCiMgSVRTTUNvcmUKIyAtLS0KCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZCBjb25maWcgZm9yIElUU01Dcml0aWNhbGl0eQogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZ0FycmF5UmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gWyAnVGlja2V0JyBdLAogICAgICAgIEZpZWxkRmlsdGVyID0+IHsKICAgICAgICAgICAgSVRTTUNyaXRpY2FsaXR5ID0+IDEsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWVzIGZvciBJVFNNQ3JpdGljYWxpdHkKICAgIG15ICVQb3NzaWJsZVZhbHVlczsKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJER5bmFtaWNGaWVsZENvbmZpZ0FycmF5UmVmIH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICRQb3NzaWJsZVZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e1Bvc3NpYmxlVmFsdWVzfSB8fCB7fTsKICAgIH0KCiAgICBteSAlQ3JpdGljYWxpdHkgPSAleyAkUG9zc2libGVWYWx1ZXN7SVRTTUNyaXRpY2FsaXR5fSB9OwoKICAgICRTZWxmLT57Q3JpdGljYWxpdHl9ID0gJENyaXRpY2FsaXR5eyAkU2VsZi0+R2V0T3B0aW9uKCdjcml0aWNhbGl0eScpIH07CgogICAgaWYgKCAhJFNlbGYtPntDcml0aWNhbGl0eX0gKSB7CiAgICAgICAgZGllICJDcml0aWNhbGl0eSAnIiAuICRTZWxmLT5HZXRPcHRpb24oJ2NyaXRpY2FsaXR5JykgLiAiJyBkb2VzIG5vdCBleGlzdC5cbiI7CiAgICB9CgogICAgIyBnZXQgc2VydmljZSB0eXBlIGxpc3QKICAgIG15ICRTZXJ2aWNlVHlwZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OlNlcnZpY2U6OlR5cGUnLAogICAgKTsKCiAgICBteSAlU2VydmljZVR5cGUgPSByZXZlcnNlICV7JFNlcnZpY2VUeXBlTGlzdH07CgogICAgJFNlbGYtPntUeXBlSUR9ID0gJFNlcnZpY2VUeXBleyAkU2VsZi0+R2V0T3B0aW9uKCd0eXBlJykgfTsKCiAgICBpZiAoICEkU2VsZi0+e1R5cGVJRH0gKSB7CiAgICAgICAgZGllICJUeXBlICciIC4gJFNlbGYtPkdldE9wdGlvbigndHlwZScpIC4gIicgZG9lcyBub3QgZXhpc3QuXG4iOwogICAgfQojIC0tLQoKICAgIHJldHVybjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5BZGRpbmcgYSBuZXcgc2VydmljZS4uLjwveWVsbG93PlxuIik7CgogICAgbXkgJExhbmd1YWdlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdEZWZhdWx0TGFuZ3VhZ2UnKSB8fCAnZW4nOwoKICAgICMgYWRkIHNlcnZpY2UKICAgIGlmICgKICAgICAgICAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKS0+U2VydmljZUFkZCgKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICAgICAgTmFtZSAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgQ29tbWVudCAgPT4gJFNlbGYtPkdldE9wdGlvbignY29tbWVudCcpLAojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgICAgICBEZXNjcmlwdGlvbnMgPT4gewogICAgICAgICAgICAgICAgJExhbmd1YWdlID0+IHsKICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvblNob3J0ID0+ICRTZWxmLT5HZXRPcHRpb24oJ2Rlc2NyaXB0aW9uJyksCiAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb25Mb25nICA9PiAkU2VsZi0+R2V0T3B0aW9uKCdkZXNjcmlwdGlvbicpLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAojIEVPIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgICAgIFBhcmVudElEID0+ICRTZWxmLT57UGFyZW50SUR9LAojIC0tLQojIElUU01Db3JlCiMgLS0tCiAgICAgICAgICAgIFR5cGVJRCAgICAgID0+ICRTZWxmLT57VHlwZUlEfSwKICAgICAgICAgICAgQ3JpdGljYWxpdHkgPT4gJFNlbGYtPntDcml0aWNhbGl0eX0sCiMgLS0tCiAgICAgICAgKQogICAgICAgICkKICAgIHsKICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiQ2FuJ3QgYWRkIHNlcnZpY2UuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKMTsK</File>
        <File Location="Custom/Kernel/System/Service.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBlNDRjMThhZWE5YWJjMTI1ZmRkZjljZWVlZDIwNGRiNGZhYjI5MGUwIC0gS2VybmVsL1N5c3RlbS9TZXJ2aWNlLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlNlcnZpY2U7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgKHF3KDphbGwpKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDaGVja0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiMgLS0tCiMgSVRTTUNvcmUKIyAtLS0KICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JywKIyAtLS0KICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRyYW5zbGF0aW9ucycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlZhbGlkJywKIyBSb3RoZXJPU1MgU2VydmljZUNhdGFsb2cgICAgCiAgICAnS2VybmVsOjpTeXN0ZW06OkFDTDo6REI6OkFDTCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkVuY29kZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJwojIEVPIFNlcnZpY2VDYXRhbG9nICAgIAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlIC0gc2VydmljZSBsaWIKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIHNlcnZpY2UgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIG15ICRTZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgJFNlbGYtPntDYWNoZVR5cGV9ID0gJ1NlcnZpY2UnOwogICAgJFNlbGYtPntDYWNoZVRUTH0gID0gNjAgKiA2MCAqIDI0ICogMjA7CiMgLS0tCiMgSVRTTUNvcmUKIyAtLS0KCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZCBmb3IgSVRTTUNyaXRpY2FsaXR5CiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnQXJyYXlSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlICA9PiBbICdUaWNrZXQnIF0sCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gewogICAgICAgICAgICBJVFNNQ3JpdGljYWxpdHkgPT4gMSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmb3IgSVRTTUNyaXRpY2FsaXR5CiAgICBteSAlUG9zc2libGVWYWx1ZXM7CiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICREeW5hbWljRmllbGRDb25maWdBcnJheVJlZiB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBnZXQgUG9zc2libGVWYWx1ZXMKICAgICAgICAkUG9zc2libGVWYWx1ZXN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntQb3NzaWJsZVZhbHVlc30gfHwge307CiAgICB9CgogICAgIyBzZXQgdGhlIGNyaXRpY2FsaXR5IGxpc3QKICAgICRTZWxmLT57Q3JpdGljYWxpdHlMaXN0fSA9ICRQb3NzaWJsZVZhbHVlc3tJVFNNQ3JpdGljYWxpdHl9OwojIC0tLQoKICAgICMgbG9hZCBnZW5lcmF0b3IgcHJlZmVyZW5jZXMgbW9kdWxlCiAgICBteSAkR2VuZXJhdG9yTW9kdWxlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTZXJ2aWNlOjpQcmVmZXJlbmNlc01vZHVsZScpCiAgICAgICAgfHwgJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlOjpQcmVmZXJlbmNlc0RCJzsKICAgIGlmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgkR2VuZXJhdG9yTW9kdWxlKSApIHsKICAgICAgICAkU2VsZi0+e1ByZWZlcmVuY2VzT2JqZWN0fSA9ICRHZW5lcmF0b3JNb2R1bGUtPm5ldygpOwogICAgfQojIC0tLQojIElUU01Db3JlCiMgLS0tCiAgICAkU2VsZi0+e0RCT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwojIC0tLQoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIFNlcnZpY2VMaXN0KCkKCnJldHVybiBhIGhhc2ggbGlzdCBvZiBzZXJ2aWNlcwoKICAgIG15ICVTZXJ2aWNlTGlzdCA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMCwgICAjIChvcHRpb25hbCkgZGVmYXVsdCAxICgwfDEpCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFNlcnZpY2VMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIHZhbGlkIHBhcmFtCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtWYWxpZH0gKSB7CiAgICAgICAgJFBhcmFte1ZhbGlkfSA9IDE7CiAgICB9CgogICAgIyByZWFkIGNhY2hlCiAgICBteSAkQ2FjaGVLZXkgPSAnU2VydmljZUxpc3Q6OlZhbGlkOjonIC4gJFBhcmFte1ZhbGlkfTsKCiAgICBpZiAoICRQYXJhbXtWYWxpZH0gJiYgZGVmaW5lZCAkUGFyYW17S2VlcENoaWxkcmVufSAmJiAkUGFyYW17S2VlcENoaWxkcmVufSBlcSAnMScgKSB7CiAgICAgICAgJENhY2hlS2V5IC49ICc6OktlZXBDaGlsZHJlbjo6JyAuICRQYXJhbXtLZWVwQ2hpbGRyZW59OwogICAgfQoKICAgIG15ICRDYWNoZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5HZXQoCiAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwogICAgcmV0dXJuICV7JENhY2hlfSBpZiByZWYgJENhY2hlIGVxICdIQVNIJzsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgYXNrIGRhdGFiYXNlCiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQsIG5hbWUsIHZhbGlkX2lkIEZST00gc2VydmljZScsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJVNlcnZpY2VMaXN0OwogICAgbXkgJVNlcnZpY2VWYWxpZExpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkU2VydmljZUxpc3R7ICRSb3dbMF0gfSAgICAgID0gJFJvd1sxXTsKICAgICAgICAkU2VydmljZVZhbGlkTGlzdHsgJFJvd1swXSB9ID0gJFJvd1syXTsKICAgIH0KCiAgICBpZiAoICEkUGFyYW17VmFsaWR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICAgICAgVmFsdWUgPT4gXCVTZXJ2aWNlTGlzdCwKICAgICAgICApOwogICAgICAgIHJldHVybiAlU2VydmljZUxpc3QgaWYgISRQYXJhbXtWYWxpZH07CiAgICB9CgogICAgIyBnZXQgdmFsaWQgaWRzCiAgICBteSBAVmFsaWRJRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRJRHNHZXQoKTsKCiAgICAjIGR1cGxpY2F0ZSBzZXJ2aWNlIGxpc3QKICAgIG15ICVTZXJ2aWNlTGlzdFRtcCA9ICVTZXJ2aWNlTGlzdDsKCiAgICAjIGFkZCBzdWZmaXggZm9yIGNvcnJlY3Qgc29ydGluZwogICAgZm9yIG15ICRTZXJ2aWNlSUQgKCBzb3J0IGtleXMgJVNlcnZpY2VMaXN0VG1wICkgewogICAgICAgICRTZXJ2aWNlTGlzdFRtcHskU2VydmljZUlEfSAuPSAnOjonOwogICAgfQoKICAgIG15ICVTZXJ2aWNlSW52YWxpZExpc3Q7CiAgICBTRVJWSUNFSUQ6CiAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIHNvcnQgeyAkU2VydmljZUxpc3RUbXB7JGF9IGNtcCAkU2VydmljZUxpc3RUbXB7JGJ9IH0ga2V5cyAlU2VydmljZUxpc3RUbXAgKQogICAgewoKICAgICAgICBteSAkVmFsaWQgPSBzY2FsYXIgZ3JlcCB7ICRfIGVxICRTZXJ2aWNlVmFsaWRMaXN0eyRTZXJ2aWNlSUR9IH0gQFZhbGlkSURzOwoKICAgICAgICBuZXh0IFNFUlZJQ0VJRCBpZiAkVmFsaWQ7CgogICAgICAgICRTZXJ2aWNlSW52YWxpZExpc3R7ICRTZXJ2aWNlTGlzdHskU2VydmljZUlEfSB9ID0gMTsKICAgICAgICBkZWxldGUgJFNlcnZpY2VMaXN0eyRTZXJ2aWNlSUR9OwogICAgfQoKICAgICMgZGVsZXRlIGludmFsaWQgc2VydmljZXMgYW5kIGNoaWxkcmVuCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtLZWVwQ2hpbGRyZW59IHx8ICEkUGFyYW17S2VlcENoaWxkcmVufSApIHsKICAgICAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIHNvcnQga2V5cyAlU2VydmljZUxpc3QgKSB7CgogICAgICAgICAgICBJTlZBTElETkFNRToKICAgICAgICAgICAgZm9yIG15ICRJbnZhbGlkTmFtZSAoIHNvcnQga2V5cyAlU2VydmljZUludmFsaWRMaXN0ICkgewoKICAgICAgICAgICAgICAgIGlmICggJFNlcnZpY2VMaXN0eyRTZXJ2aWNlSUR9ID1+IG17IFxBIFxRJEludmFsaWROYW1lXEUgOjogfXhtcyApIHsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJFNlcnZpY2VMaXN0eyRTZXJ2aWNlSUR9OwogICAgICAgICAgICAgICAgICAgIGxhc3QgSU5WQUxJRE5BTUU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgY2FjaGUKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICBWYWx1ZSA9PiBcJVNlcnZpY2VMaXN0LAogICAgKTsKCiAgICByZXR1cm4gJVNlcnZpY2VMaXN0Owp9Cgo9aGVhZDIgU2VydmljZUxpc3RHZXQoKQoKcmV0dXJuIGEgbGlzdCBvZiBzZXJ2aWNlcyB3aXRoIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGF0dHJpYnV0ZXMgZm9yIGVhY2ggc2VydmljZQoKICAgIG15ICRTZXJ2aWNlTGlzdCA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlTGlzdEdldCgKICAgICAgICBWYWxpZCAgPT4gMCwgICAjIChvcHRpb25hbCkgZGVmYXVsdCAxICgwfDEpCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIHJldHVybnMKCiAgICAkU2VydmljZUxpc3QgPSBbCiAgICAgICAgewogICAgICAgICAgICBTZXJ2aWNlSUQgID0+IDEsCiAgICAgICAgICAgIFBhcmVudElEICAgPT4gMCwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTXlTZXJ2aWNlJywKICAgICAgICAgICAgTmFtZVNob3J0ICA9PiAnTXlTZXJ2aWNlJywKICAgICAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgICAgICBDb21tZW50ICAgID0+ICdTb21lIENvbW1lbnQnCiAgICAgICAgICAgIENyZWF0ZVRpbWUgPT4gJzIwMTEtMDItMDggMTU6MDg6MDAnLAogICAgICAgICAgICBDaGFuZ2VUaW1lID0+ICcyMDExLTA2LTExIDE3OjIyOjAwJywKICAgICAgICAgICAgQ3JlYXRlQnkgICA9PiAxLAogICAgICAgICAgICBDaGFuZ2VCeSAgID0+IDEsCiMgLS0tCiMgSVRTTUNvcmUKIyAtLS0KICAgICAgICAgICAgVHlwZUlEICAgICAgICAgICA9PiAxNiwKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICA9PiAnQmFja2VuZCcsCiAgICAgICAgICAgIENyaXRpY2FsaXR5ICAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAxLAogICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ29wZXJhdGlvbmFsJywKIyAtLS0KIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgICAgICAgICAgRGVzY3JpcHRpb25zID0+IHsKICAgICAgICAgICAgICAgIGVuID0+IHsKICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvblNob3J0ICA9PiAnU2VydmljZSBBJywKICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbkxvbmcgICA9PiAnVGhpcyBpcyBTZXJ2aWNlIEEuJywKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb25TaG9ydCAgPT4gJ1NlcnZpY2UgQScsCiAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb25Mb25nICAgPT4gJ0RhcyBpc3QgU2VydmljZSBBLicsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9CiAgICAgICAgICAgIFRpY2tldFR5cGVJRHMgICAgPT4gWyAxLCAyLCAzIF0sCiAgICAgICAgICAgIEtleXdvcmRzICAgICAgICAgPT4gJ3NlcnZpY2UgaGludHMgZm9yIGZpbHRlcicsCiMgRU8gU2VydmljZUNhdGFsb2cKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgU2VydmljZUlEICA9PiAyLAogICAgICAgICAgICBQYXJlbnRJRCAgID0+IDEsCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ015U2VydmljZTo6TXlTdWJTZXJ2aWNlJywKICAgICAgICAgICAgTmFtZVNob3J0ICA9PiAnTXlTdWJTZXJ2aWNlJywKICAgICAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgICAgICBDb21tZW50ICAgID0+ICdTb21lIENvbW1lbnQnCiAgICAgICAgICAgIENyZWF0ZVRpbWUgPT4gJzIwMTEtMDItMDggMTU6MDg6MDAnLAogICAgICAgICAgICBDaGFuZ2VUaW1lID0+ICcyMDExLTA2LTExIDE3OjIyOjAwJywKICAgICAgICAgICAgQ3JlYXRlQnkgICA9PiAxLAogICAgICAgICAgICBDaGFuZ2VCeSAgID0+IDEsCiMgLS0tCiMgSVRTTUNvcmUKIyAtLS0KICAgICAgICAgICAgVHlwZUlEICAgICAgICAgICA9PiAxNiwKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICA9PiAnQmFja2VuZCcsCiAgICAgICAgICAgIENyaXRpY2FsaXR5ICAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAxLAogICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ29wZXJhdGlvbmFsJywKIyAtLS0KICAgICAgICB9LAogICAgICAgICMgLi4uCiAgICBdOwoKPWN1dAoKc3ViIFNlcnZpY2VMaXN0R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIHZhbGlkIHBhcmFtCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtWYWxpZH0gKSB7CiAgICAgICAgJFBhcmFte1ZhbGlkfSA9IDE7CiAgICB9CgogICAgIyBjaGVjayBjYWNoZWQgcmVzdWx0cwogICAgbXkgJENhY2hlS2V5ID0gJ0NhY2hlOjpTZXJ2aWNlTGlzdEdldDo6VmFsaWQ6OicgLiAkUGFyYW17VmFsaWR9OwogICAgbXkgJENhY2hlICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkdldCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CiAgICByZXR1cm4gJENhY2hlIGlmIGRlZmluZWQgJENhY2hlOwoKICAgICMgY3JlYXRlIFNRTCBxdWVyeQogICAgbXkgJFNRTCA9ICdTRUxFQ1QgaWQsIG5hbWUsIHZhbGlkX2lkLCBjb21tZW50cywgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSwgY2hhbmdlX3RpbWUsIGNoYW5nZV9ieSAnCiMgLS0tCiMgSVRTTUNvcmUKIyAtLS0KICAgICAgICAuICIsIHR5cGVfaWQsIGNyaXRpY2FsaXR5ICIKIyAtLS0KIyBSb3RoZXJPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgIC4gIiwga2V5d29yZHMgIgojIEVPIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgLiAnRlJPTSBzZXJ2aWNlJzsKCiAgICBpZiAoICRQYXJhbXtWYWxpZH0gKSB7CiAgICAgICAgJFNRTCAuPSAnIFdIRVJFIHZhbGlkX2lkIElOICgnIC4gam9pbiAnLCAnLAogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRJRHNHZXQoKSAuICcpJzsKICAgIH0KCiAgICAkU1FMIC49ICcgT1JERVIgQlkgbmFtZSc7CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGFzayBkYXRhYmFzZQogICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAkU1FMLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBTZXJ2aWNlTGlzdDsKICAgIG15ICVTZXJ2aWNlTmFtZTJJRDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIG15ICVTZXJ2aWNlRGF0YTsKICAgICAgICAkU2VydmljZURhdGF7U2VydmljZUlEfSAgPSAkUm93WzBdOwogICAgICAgICRTZXJ2aWNlRGF0YXtOYW1lfSAgICAgICA9ICRSb3dbMV07CiAgICAgICAgJFNlcnZpY2VEYXRhe1ZhbGlkSUR9ICAgID0gJFJvd1syXTsKICAgICAgICAkU2VydmljZURhdGF7Q29tbWVudH0gICAgPSAkUm93WzNdIHx8ICcnOwogICAgICAgICRTZXJ2aWNlRGF0YXtDcmVhdGVUaW1lfSA9ICRSb3dbNF07CiAgICAgICAgJFNlcnZpY2VEYXRhe0NyZWF0ZUJ5fSAgID0gJFJvd1s1XTsKICAgICAgICAkU2VydmljZURhdGF7Q2hhbmdlVGltZX0gPSAkUm93WzZdOwogICAgICAgICRTZXJ2aWNlRGF0YXtDaGFuZ2VCeX0gICA9ICRSb3dbN107CiMgLS0tCiMgSVRTTUNvcmUKIyAtLS0KICAgICAgICAkU2VydmljZURhdGF7VHlwZUlEfSAgICAgID0gJFJvd1s4XTsKICAgICAgICAkU2VydmljZURhdGF7Q3JpdGljYWxpdHl9ID0gJFJvd1s5XSB8fCAnJzsKIyAtLS0KIyBSb3RoZXJPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgICRTZXJ2aWNlRGF0YXtLZXl3b3Jkc30gICAgICAgICA9ICRSb3dbMTBdOwojIEVPIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgIyBhZGQgc2VydmljZSBkYXRhIHRvIHNlcnZpY2UgbGlzdAogICAgICAgIHB1c2ggQFNlcnZpY2VMaXN0LCBcJVNlcnZpY2VEYXRhOwoKICAgICAgICAjIGJ1aWxkIHNlcnZpY2UgaWQgbG9va3VwIGhhc2gKICAgICAgICAkU2VydmljZU5hbWUySUR7ICRTZXJ2aWNlRGF0YXtOYW1lfSB9ID0gJFNlcnZpY2VEYXRhe1NlcnZpY2VJRH07CiAgICB9CgogICAgZm9yIG15ICRTZXJ2aWNlRGF0YSAoQFNlcnZpY2VMaXN0KSB7CgogICAgICAgICMgY3JlYXRlIHNob3J0IG5hbWUgYW5kIHBhcmVudGlkCiAgICAgICAgJFNlcnZpY2VEYXRhLT57TmFtZVNob3J0fSA9ICRTZXJ2aWNlRGF0YS0+e05hbWV9OwogICAgICAgIGlmICggJFNlcnZpY2VEYXRhLT57TmFtZX0gPX4gbXsgXEEgKC4qKSA6OiAoLis/KSBceiB9eG1zICkgewogICAgICAgICAgICBteSAkUGFyZW50TmFtZSA9ICQxOwogICAgICAgICAgICAkU2VydmljZURhdGEtPntOYW1lU2hvcnR9ID0gJDI7CiAgICAgICAgICAgICRTZXJ2aWNlRGF0YS0+e1BhcmVudElEfSAgPSAkU2VydmljZU5hbWUySUR7JFBhcmVudE5hbWV9OwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgc2VydmljZSBwcmVmZXJlbmNlcwogICAgICAgIG15ICVQcmVmZXJlbmNlcyA9ICRTZWxmLT5TZXJ2aWNlUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgICAgIFNlcnZpY2VJRCA9PiAkU2VydmljZURhdGEtPntTZXJ2aWNlSUR9LAogICAgICAgICk7CgogICAgICAgICMgbWVyZ2UgaGFzaAogICAgICAgIGlmICglUHJlZmVyZW5jZXMpIHsKICAgICAgICAgICAgJXskU2VydmljZURhdGF9ID0gKCAleyRTZXJ2aWNlRGF0YX0sICVQcmVmZXJlbmNlcyApOwogICAgICAgIH0KCiMgUm90aGVyT1NTIC8gU2VydmljZUNhdGFsb2cKICAgICAgICAjIEdldCBhbGwgbGlua2VkIHRpY2tldCB0eXBlIElEcy4KICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PgogICAgICAgICAgICAgICAgJ1NFTEVDVCB0aWNrZXRfdHlwZV9pZCBGUk9NIHNlcnZpY2VfdHlwZSBXSEVSRSBzZXJ2aWNlX2lkID0gPycsCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRTZXJ2aWNlRGF0YS0+e1NlcnZpY2VJRH0gXSwKICAgICAgICApOwoKICAgICAgICBteSBAVGlja2V0VHlwZUlEczsKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgcHVzaCBAVGlja2V0VHlwZUlEcywgJFJvd1swXTsKICAgICAgICB9CiAgICAgICAgJFNlcnZpY2VEYXRhLT57VGlja2V0VHlwZUlEc30gPSBcQFRpY2tldFR5cGVJRHM7CiMgRU8gU2VydmljZUNhdGFsb2cKCiMgLS0tCiMgSVRTTUNvcmUKIyAtLS0KICAgICAgICAjIGdldCBjdXJyZW50IGluY2lkZW50IHN0YXRlLCBjYWxjdWxhdGVkIGZyb20gcmVsYXRlZCBjb25maWcgaXRlbXMgYW5kIGNoaWxkIHNlcnZpY2VzCiAgICAgICAgbXkgJU5ld1NlcnZpY2VEYXRhID0gJFNlbGYtPl9TZXJ2aWNlR2V0Q3VycmVudEluY2lkZW50U3RhdGUoCiAgICAgICAgICAgIFNlcnZpY2VEYXRhID0+ICRTZXJ2aWNlRGF0YSwKICAgICAgICAgICAgUHJlZmVyZW5jZXMgPT4gXCVQcmVmZXJlbmNlcywKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAkU2VydmljZURhdGEgPSBcJU5ld1NlcnZpY2VEYXRhOwojIC0tLQoKIyBSb3RoZXJPU1MgLyBTZXJ2aWNlQ2F0YWxvZwoKICAgICAgICAjIGdldCBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBkYXRhCiAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgU0VMRUNUIGRlc2NyaXB0aW9uX3Nob3J0LCBkZXNjcmlwdGlvbl9sb25nLCBjb250ZW50X3R5cGUsIGxhbmd1YWdlCiAgICAgICAgICAgICAgICBGUk9NIHNlcnZpY2VfZGVzY3JpcHRpb24KICAgICAgICAgICAgICAgIFdIRVJFIHNlcnZpY2VfaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkU2VydmljZURhdGEtPntTZXJ2aWNlSUR9IF0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJURlc2NyaXB0aW9uczsKCiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgICAgICAjIGFkZCB0byBkZXNjcmlwdGlvbnMgaGFzaCB3aXRoIHRoZSBsYW5ndWFnZSBhcyBrZXkKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3sgJFJvd1szXSB9ID0gewogICAgICAgICAgICAgICAgRGVzY3JpcHRpb25TaG9ydCA9PiAkUm93WzBdLAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb25Mb25nICA9PiAkUm93WzFdLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICA9PiAkUm93WzJdLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlcnZpY2VEYXRhLT57RGVzY3JpcHRpb25zfSA9IFwlRGVzY3JpcHRpb25zOwoKIyBFTyBTZXJ2aWNlQ2F0YWxvZwogICAgfQoKICAgIGlmIChAU2VydmljZUxpc3QpIHsKCiAgICAgICAgIyBzZXQgY2FjaGUKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+U2V0KAogICAgICAgICAgICBUeXBlICA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgICAgIFZhbHVlID0+IFxAU2VydmljZUxpc3QsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gXEBTZXJ2aWNlTGlzdDsKfQoKPWhlYWQyIFNlcnZpY2VHZXQoKQoKcmV0dXJuIGEgc2VydmljZSBhcyBoYXNoCgpSZXR1cm4KICAgICRTZXJ2aWNlRGF0YXtTZXJ2aWNlSUR9CiAgICAkU2VydmljZURhdGF7UGFyZW50SUR9CiAgICAkU2VydmljZURhdGF7TmFtZX0KICAgICRTZXJ2aWNlRGF0YXtOYW1lU2hvcnR9CiAgICAkU2VydmljZURhdGF7VmFsaWRJRH0KICAgICRTZXJ2aWNlRGF0YXtDb21tZW50fQogICAgJFNlcnZpY2VEYXRhe0NyZWF0ZVRpbWV9CiAgICAkU2VydmljZURhdGF7Q3JlYXRlQnl9CiAgICAkU2VydmljZURhdGF7Q2hhbmdlVGltZX0KICAgICRTZXJ2aWNlRGF0YXtDaGFuZ2VCeX0KIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgIERlc2NyaXB0aW9ucyA9PiB7CiAgICAgICAgZW4gPT4gewogICAgICAgICAgICBEZXNjcmlwdGlvblNob3J0ICA9PiAnU2VydmljZSBBJywKICAgICAgICAgICAgRGVzY3JpcHRpb25Mb25nICAgPT4gJ1RoaXMgaXMgU2VydmljZSBBLicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgID0+ICd0ZXh0L2h0bWwnLAogICAgICAgIH0sCiAgICAgICAgZGUgPT4gewogICAgICAgICAgICBEZXNjcmlwdGlvblNob3J0ICA9PiAnU2VydmljZSBBJywKICAgICAgICAgICAgRGVzY3JpcHRpb25Mb25nICAgPT4gJ0RhcyBpc3QgU2VydmljZSBBLicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgID0+ICd0ZXh0L2h0bWwnLAogICAgICAgIH0sCiAgICB9CiAgICAkU2VydmljZURhdGF7VGlja2V0VHlwZUlEc30KICAgICRTZXJ2aWNlRGF0YXtEZXN0UXVldWVJRH0KICAgICRTZXJ2aWNlRGF0YXtLZXl3b3Jkc30KIyBFTyBTZXJ2aWNlQ2F0YWxvZwojIC0tLQojIElUU01Db3JlCiMgLS0tCiAgICAkU2VydmljZURhdGF7VHlwZUlEfQogICAgJFNlcnZpY2VEYXRhe1R5cGV9CiAgICAkU2VydmljZURhdGF7Q3JpdGljYWxpdHl9CiAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlSUR9ICAgICMgT25seSBpZiBJbmNpZGVudFN0YXRlIGlzIDEKICAgICRTZXJ2aWNlRGF0YXtDdXJJbmNpU3RhdGV9ICAgICAgIyBPbmx5IGlmIEluY2lkZW50U3RhdGUgaXMgMQogICAgJFNlcnZpY2VEYXRhe0N1ckluY2lTdGF0ZVR5cGV9ICAjIE9ubHkgaWYgSW5jaWRlbnRTdGF0ZSBpcyAxCgogICAgbXkgJVNlcnZpY2VEYXRhID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VHZXQoCiAgICAgICAgU2VydmljZUlEICAgICA9PiAxMjMsCiAgICAgICAgSW5jaWRlbnRTdGF0ZSA9PiAxLCAjIE9wdGlvbmFsLCByZXR1cm5zIEN1ckluY2lTdGF0ZSBldGMuCiAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgKTsKIyAtLS0KCiAgICBteSAlU2VydmljZURhdGEgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUdldCgKICAgICAgICBTZXJ2aWNlSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKCiAgICBteSAlU2VydmljZURhdGEgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUdldCgKICAgICAgICBOYW1lICAgID0+ICdTZXJ2aWNlOjpTdWJTZXJ2aWNlJywKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFNlcnZpY2VHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZWl0aGVyIFNlcnZpY2VJRCBvciBOYW1lIG11c3QgYmUgcGFzc2VkCiAgICBpZiAoICEkUGFyYW17U2VydmljZUlEfSAmJiAhJFBhcmFte05hbWV9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTZXJ2aWNlSUQgb3IgTmFtZSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgdGhhdCBub3QgYm90aCBTZXJ2aWNlSUQgYW5kIE5hbWUgYXJlIGdpdmVuCiAgICBpZiAoICRQYXJhbXtTZXJ2aWNlSUR9ICYmICRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgZWl0aGVyIFNlcnZpY2VJRCBPUiBOYW1lIC0gbm90IGJvdGghJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxvb2t1cCB0aGUgU2VydmljZUlECiAgICBpZiAoICRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkUGFyYW17U2VydmljZUlEfSA9ICRTZWxmLT5TZXJ2aWNlTG9va3VwKAogICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgY2FjaGVkIHJlc3VsdHMKICAgIG15ICRDYWNoZUtleSA9ICdDYWNoZTo6U2VydmljZUdldDo6JyAuICRQYXJhbXtTZXJ2aWNlSUR9OwojIC0tLQojIElUU01Db3JlCiMgLS0tCiAgICAjIGFkZCB0aGUgSW5jaWRlbnRTdGF0ZSBwYXJhbWV0ZXIgdG8gdGhlIGNhY2hlIGtleQogICAgJFBhcmFte0luY2lkZW50U3RhdGV9IHx8PSAwOwogICAgJENhY2hlS2V5IC49ICc6OkluY2lkZW50U3RhdGU6OicgLiAkUGFyYW17SW5jaWRlbnRTdGF0ZX07CiMgLS0tCiAgICBteSAkQ2FjaGUgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+R2V0KAogICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKICAgIHJldHVybiAleyRDYWNoZX0gaWYgcmVmICRDYWNoZSBlcSAnSEFTSCc7CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBzZXJ2aWNlIGZyb20gZGIKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4KICAgICAgICAgICAgJ1NFTEVDVCBpZCwgbmFtZSwgdmFsaWRfaWQsIGNvbW1lbnRzLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5ICcKIyAtLS0KIyBJVFNNQ29yZQojIC0tLQogICAgICAgICAgICAuICIsIHR5cGVfaWQsIGNyaXRpY2FsaXR5ICIKIyAtLS0KIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgICAgICAgICAgLiAiLCBkZXN0X3F1ZXVlaWQsIGtleXdvcmRzICIKIyBFTyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgICAgICAuICdGUk9NIHNlcnZpY2UgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17U2VydmljZUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJVNlcnZpY2VEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFNlcnZpY2VEYXRhe1NlcnZpY2VJRH0gID0gJFJvd1swXTsKICAgICAgICAkU2VydmljZURhdGF7TmFtZX0gICAgICAgPSAkUm93WzFdOwogICAgICAgICRTZXJ2aWNlRGF0YXtWYWxpZElEfSAgICA9ICRSb3dbMl07CiAgICAgICAgJFNlcnZpY2VEYXRhe0NvbW1lbnR9ICAgID0gJFJvd1szXSB8fCAnJzsKICAgICAgICAkU2VydmljZURhdGF7Q3JlYXRlVGltZX0gPSAkUm93WzRdOwogICAgICAgICRTZXJ2aWNlRGF0YXtDcmVhdGVCeX0gICA9ICRSb3dbNV07CiAgICAgICAgJFNlcnZpY2VEYXRhe0NoYW5nZVRpbWV9ID0gJFJvd1s2XTsKICAgICAgICAkU2VydmljZURhdGF7Q2hhbmdlQnl9ICAgPSAkUm93WzddOwojIC0tLQojIElUU01Db3JlCiMgLS0tCiAgICAgICAgJFNlcnZpY2VEYXRhe1R5cGVJRH0gICAgICA9ICRSb3dbOF07CiAgICAgICAgJFNlcnZpY2VEYXRhe0NyaXRpY2FsaXR5fSA9ICRSb3dbOV0gfHwgJyc7CiMgLS0tCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgJFNlcnZpY2VEYXRhe0Rlc3RRdWV1ZUlEfSAgICAgID0gJFJvd1sxMF07CiAgICAgICAgJFNlcnZpY2VEYXRhe0tleXdvcmRzfSAgICAgICAgID0gJFJvd1sxMV07CiMgRU8gU2VydmljZUNhdGFsb2cKICAgIH0KCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAjIGdldCBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBkYXRhCiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGRlc2NyaXB0aW9uX3Nob3J0LCBkZXNjcmlwdGlvbl9sb25nLCBjb250ZW50X3R5cGUsIGxhbmd1YWdlCiAgICAgICAgICAgIEZST00gc2VydmljZV9kZXNjcmlwdGlvbgogICAgICAgICAgICBXSEVSRSBzZXJ2aWNlX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkU2VydmljZURhdGF7U2VydmljZUlEfSBdLAogICAgKTsKCiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKCiAgICAgICAgIyBhZGQgdG8gZGVzY3JpcHRpb25zIGhhc2ggd2l0aCB0aGUgbGFuZ3VhZ2UgYXMga2V5CiAgICAgICAgJFNlcnZpY2VEYXRhe0Rlc2NyaXB0aW9uc30tPnsgJFJvd1szXSB9ID0gewogICAgICAgICAgICBEZXNjcmlwdGlvblNob3J0ID0+ICRSb3dbMF0sCiAgICAgICAgICAgIERlc2NyaXB0aW9uTG9uZyAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICA9PiAkUm93WzJdLAogICAgICAgIH07CiAgICB9CgogICAgIyBHZXQgYWxsIGxpbmtlZCB0aWNrZXQgdHlwZSBJRHMuCiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+CiAgICAgICAgICAgICdTRUxFQ1QgdGlja2V0X3R5cGVfaWQgRlJPTSBzZXJ2aWNlX3R5cGUgV0hFUkUgc2VydmljZV9pZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtTZXJ2aWNlSUR9IF0sCiAgICApOwoKICAgIG15IEBUaWNrZXRUeXBlSURzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBAVGlja2V0VHlwZUlEcywgJFJvd1swXTsKICAgIH0KICAgICRTZXJ2aWNlRGF0YXtUaWNrZXRUeXBlSURzfSA9IFxAVGlja2V0VHlwZUlEczsKIyBFTyBTZXJ2aWNlQ2F0YWxvZwoKICAgICMgY2hlY2sgc2VydmljZQogICAgaWYgKCAhJFNlcnZpY2VEYXRhe1NlcnZpY2VJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIFNlcnZpY2VJRCAoJFBhcmFte1NlcnZpY2VJRH0pISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjcmVhdGUgc2hvcnQgbmFtZSBhbmQgcGFyZW50aWQKICAgICRTZXJ2aWNlRGF0YXtOYW1lU2hvcnR9ID0gJFNlcnZpY2VEYXRhe05hbWV9OwogICAgaWYgKCAkU2VydmljZURhdGF7TmFtZX0gPX4gbXsgXEEgKC4qKSA6OiAoLis/KSBceiB9eG1zICkgewogICAgICAgICRTZXJ2aWNlRGF0YXtOYW1lU2hvcnR9ID0gJDI7CgogICAgICAgICMgbG9va3VwIHBhcmVudAogICAgICAgIG15ICRTZXJ2aWNlSUQgPSAkU2VsZi0+U2VydmljZUxvb2t1cCgKICAgICAgICAgICAgTmFtZSA9PiAkMSwKICAgICAgICApOwogICAgICAgICRTZXJ2aWNlRGF0YXtQYXJlbnRJRH0gPSAkU2VydmljZUlEOwogICAgfQoKICAgICMgZ2V0IHNlcnZpY2UgcHJlZmVyZW5jZXMKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRTZWxmLT5TZXJ2aWNlUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgU2VydmljZUlEID0+ICRQYXJhbXtTZXJ2aWNlSUR9LAogICAgKTsKCiAgICAjIG1lcmdlIGhhc2gKICAgIGlmICglUHJlZmVyZW5jZXMpIHsKICAgICAgICAlU2VydmljZURhdGEgPSAoICVTZXJ2aWNlRGF0YSwgJVByZWZlcmVuY2VzICk7CiAgICB9CiMgLS0tCiMgSVRTTUNvcmUKIyAtLS0KICAgIGlmICggJFBhcmFte0luY2lkZW50U3RhdGV9ICkgewogICAgICAgICMgZ2V0IGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUsIGNhbGN1bGF0ZWQgZnJvbSByZWxhdGVkIGNvbmZpZyBpdGVtcyBhbmQgY2hpbGQgc2VydmljZXMKICAgICAgICAlU2VydmljZURhdGEgPSAkU2VsZi0+X1NlcnZpY2VHZXRDdXJyZW50SW5jaWRlbnRTdGF0ZSgKICAgICAgICAgICAgU2VydmljZURhdGEgPT4gXCVTZXJ2aWNlRGF0YSwKICAgICAgICAgICAgUHJlZmVyZW5jZXMgPT4gXCVQcmVmZXJlbmNlcywKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KIyAtLS0KCiAgICAjIHNldCBjYWNoZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPlNldCgKICAgICAgICBUeXBlICA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFwlU2VydmljZURhdGEsCiAgICApOwoKICAgIHJldHVybiAlU2VydmljZURhdGE7Cn0KCj1oZWFkMiBTZXJ2aWNlTG9va3VwKCkKCnJldHVybiBhIHNlcnZpY2UgbmFtZSBhbmQgaWQKCiAgICBteSAkU2VydmljZU5hbWUgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUxvb2t1cCgKICAgICAgICBTZXJ2aWNlSUQgPT4gMTIzLAogICAgKTsKCiAgICBvcgoKICAgIG15ICRTZXJ2aWNlSUQgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUxvb2t1cCgKICAgICAgICBOYW1lID0+ICdTZXJ2aWNlOjpTdWJTZXJ2aWNlJywKICAgICk7Cgo9Y3V0CgpzdWIgU2VydmljZUxvb2t1cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17U2VydmljZUlEfSAmJiAhJFBhcmFte05hbWV9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTZXJ2aWNlSUQgb3IgTmFtZSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJFBhcmFte1NlcnZpY2VJRH0gKSB7CgogICAgICAgICMgY2hlY2sgY2FjaGUKICAgICAgICBteSAkQ2FjaGVLZXkgPSAnQ2FjaGU6OlNlcnZpY2VMb29rdXA6OklEOjonIC4gJFBhcmFte1NlcnZpY2VJRH07CiAgICAgICAgbXkgJENhY2hlICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkdldCgKICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRDYWNoZSBpZiBkZWZpbmVkICRDYWNoZTsKCiAgICAgICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgICMgbG9va3VwCiAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgICA9PiAnU0VMRUNUIG5hbWUgRlJPTSBzZXJ2aWNlIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtTZXJ2aWNlSUR9IF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFJlc3VsdCA9ICcnOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAkUmVzdWx0ID0gJFJvd1swXTsKICAgICAgICB9CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICAgICAgVmFsdWUgPT4gJFJlc3VsdCwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJFJlc3VsdDsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGNoZWNrIGNhY2hlCiAgICAgICAgbXkgJENhY2hlS2V5ID0gJ0NhY2hlOjpTZXJ2aWNlTG9va3VwOjpOYW1lOjonIC4gJFBhcmFte05hbWV9OwogICAgICAgIG15ICRDYWNoZSAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5HZXQoCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkQ2FjaGUgaWYgZGVmaW5lZCAkQ2FjaGU7CgogICAgICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICAgICAjIGxvb2t1cAogICAgICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMICAgPT4gJ1NFTEVDVCBpZCBGUk9NIHNlcnZpY2UgV0hFUkUgbmFtZSA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17TmFtZX0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBteSAkUmVzdWx0ID0gJyc7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRSZXN1bHQgPSAkUm93WzBdOwogICAgICAgIH0KCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgICAgICBWYWx1ZSA9PiAkUmVzdWx0LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkUmVzdWx0OwogICAgfQp9Cgo9aGVhZDIgU2VydmljZUFkZCgpCgphZGQgYSBzZXJ2aWNlCgogICAgbXkgJFNlcnZpY2VJRCA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlQWRkKAogICAgICAgIE5hbWUgICAgID0+ICdTZXJ2aWNlIE5hbWUnLAogICAgICAgIFBhcmVudElEID0+IDEsICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgIENvbW1lbnQgID0+ICdDb21tZW50JywgICAgIyAob3B0aW9uYWwpCiAgICAgICAgVXNlcklEICAgPT4gMSwKIyAtLS0KIyBJVFNNQ29yZQojIC0tLQogICAgICAgIFR5cGVJRCAgICAgID0+IDIsCiAgICAgICAgQ3JpdGljYWxpdHkgPT4gJzMgbm9ybWFsJywKIyAtLS0KIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgICAgICBEZXNjcmlwdGlvbnMgPT4gewogICAgICAgICAgICBlbiA9PiB7CiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvblNob3J0ICA9PiAnU2VydmljZSBBJywKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uTG9uZyAgID0+ICdUaGlzIGlzIFNlcnZpY2UgQS4nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRlID0+IHsKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uU2hvcnQgID0+ICdTZXJ2aWNlIEEnLAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb25Mb25nICAgPT4gJ0RhcyBpc3QgU2VydmljZSBBLicsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFRpY2tldFR5cGVJRHMgICAgPT4gWyAxLCAyLCAzIF0sCiAgICAgICAgS2V5d29yZHMgICAgICAgICA9PiAnc2VydmljZSBoaW50cyBmb3IgZmlsdGVyJywKIyBFTyBTZXJ2aWNlQ2F0YWxvZwogICAgKTsKCj1jdXQKCnN1YiBTZXJ2aWNlQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKIyMgLS0tCiMjIElUU01Db3JlCiMjIC0tLQojIyAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhOYW1lIFZhbGlkSUQgVXNlcklEKSkgewojICAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhOYW1lIFZhbGlkSUQgVXNlcklEIFR5cGVJRCBDcml0aWNhbGl0eSkpIHsKIyMgLS0tCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhOYW1lIFZhbGlkSUQgVXNlcklEIERlc2NyaXB0aW9ucyBDcml0aWNhbGl0eSkpIHsKIyBFTyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBjb21tZW50CiAgICAkUGFyYW17Q29tbWVudH0gfHw9ICcnOwoKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgICRQYXJhbXtEZXN0UXVldWVJRH0gfHw9ICcnOwojIEVPIFNlcnZpY2VDYXRhbG9nCgogICAgIyBjbGVhbnVwIGdpdmVuIHBhcmFtcwogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTmFtZSBDb21tZW50KSkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDaGVja0l0ZW0nKS0+U3RyaW5nQ2xlYW4oCiAgICAgICAgICAgIFN0cmluZ1JlZiAgICAgICAgID0+IFwkUGFyYW17JEFyZ3VtZW50fSwKICAgICAgICAgICAgUmVtb3ZlQWxsTmV3bGluZXMgPT4gMSwKICAgICAgICAgICAgUmVtb3ZlQWxsVGFicyAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgc2VydmljZSBuYW1lCiAgICBpZiAoICRQYXJhbXtOYW1lfSA9fiBteyA6OiB9eG1zICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgYWRkIHNlcnZpY2UhIEludmFsaWQgU2VydmljZSBuYW1lICckUGFyYW17TmFtZX0nISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgIyBjaGVjayBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBwYXJhbWV0ZXIKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RGVzY3JpcHRpb25zfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBTZXJ2aWNlIGRlc2NyaXB0aW9ucyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgZWFjaCBhcmd1bWVudCBmb3IgZWFjaCBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBsYW5ndWFnZQogICAgZm9yIG15ICRMYW5ndWFnZSAoIHNvcnQga2V5cyAleyAkUGFyYW17RGVzY3JpcHRpb25zfSB9ICkgewoKICAgICAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhEZXNjcmlwdGlvblNob3J0IENvbnRlbnRUeXBlKSkgewoKICAgICAgICAgICAgIyBlcnJvciBpZiBtZXNzYWdlIGRhdGEgaXMgaW5jb21wbGV0ZQogICAgICAgICAgICBpZiAoICEkUGFyYW17RGVzY3JpcHRpb25zfS0+eyRMYW5ndWFnZX0tPnskQXJndW1lbnR9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBzZXJ2aWNlIGRlc2NyaXB0aW9uIGFyZ3VtZW50ICckQXJndW1lbnQnIGZvciBsYW5ndWFnZSAnJExhbmd1YWdlJyEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBmaXggc29tZSBiYWQgc3R1ZmYgZnJvbSBzb21lIGJyb3dzZXJzIChPcGVyYSkhCiAgICAgICAgICAgICRQYXJhbXtEZXNjcmlwdGlvbnN9LT57JExhbmd1YWdlfS0+e0Rlc2NyaXB0aW9uTG9uZ30gfHw9ICcnOwogICAgICAgICAgICAkUGFyYW17RGVzY3JpcHRpb25zfS0+eyRMYW5ndWFnZX0tPntEZXNjcmlwdGlvbkxvbmd9ID1+IHMvKFxuXHJ8XHJcclxufFxyXG58XHIpL1xuL2c7CiAgICAgICAgfQogICAgfQojIEVPIFNlcnZpY2VDYXRhbG9nCgogICAgIyBjcmVhdGUgZnVsbCBuYW1lCiAgICAkUGFyYW17RnVsbE5hbWV9ID0gJFBhcmFte05hbWV9OwoKICAgICMgZ2V0IHBhcmVudCBuYW1lCiAgICBpZiAoICRQYXJhbXtQYXJlbnRJRH0gKSB7CiAgICAgICAgbXkgJFBhcmVudE5hbWUgPSAkU2VsZi0+U2VydmljZUxvb2t1cCgKICAgICAgICAgICAgU2VydmljZUlEID0+ICRQYXJhbXtQYXJlbnRJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoJFBhcmVudE5hbWUpIHsKICAgICAgICAgICAgJFBhcmFte0Z1bGxOYW1lfSA9ICRQYXJlbnROYW1lIC4gJzo6JyAuICRQYXJhbXtOYW1lfTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGZpbmQgZXhpc3Rpbmcgc2VydmljZQogICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgaWQgRlJPTSBzZXJ2aWNlIFdIRVJFIG5hbWUgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17RnVsbE5hbWV9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJEV4aXN0czsKICAgIHdoaWxlICggJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEV4aXN0cyA9IDE7CiAgICB9CgogICAgIyBhZGQgc2VydmljZSB0byBkYXRhYmFzZQogICAgaWYgKCRFeGlzdHMpIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkEgc2VydmljZSB3aXRoIHRoZSBuYW1lIGFuZCBwYXJlbnQgJyRQYXJhbXtGdWxsTmFtZX0nIGFscmVhZHkgZXhpc3RzLiIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwojIyAtLS0KIyMgSVRTTUNvcmUKIyMgLS0tCiMjICAgICAgICBTUUwgPT4gJ0lOU0VSVCBJTlRPIHNlcnZpY2UgJwojIyAgICAgICAgICAgIC4gJyhuYW1lLCB2YWxpZF9pZCwgY29tbWVudHMsIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnksIGNoYW5nZV90aW1lLCBjaGFuZ2VfYnkpICcKIyMgICAgICAgICAgICAuICdWQUxVRVMgKD8sID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAojIyAgICAgICAgQmluZCA9PiBbCiMjICAgICAgICAgICAgXCRQYXJhbXtGdWxsTmFtZX0sIFwkUGFyYW17VmFsaWRJRH0sIFwkUGFyYW17Q29tbWVudH0sCiMjICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0sCiMjICAgICAgICBdLAojICAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBzZXJ2aWNlICcKIyAgICAgICAgICAgICAuICcobmFtZSwgdmFsaWRfaWQsIGNvbW1lbnRzLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5LCAnCiMgICAgICAgICAgICAgLiAndHlwZV9pZCwgY3JpdGljYWxpdHkpICcKIyAgICAgICAgICAgICAuICdWQUxVRVMgKD8sID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPywgPywgPyknLAojICAgICAgICAgQmluZCA9PiBbCiMgICAgICAgICAgICAgXCRQYXJhbXtGdWxsTmFtZX0sIFwkUGFyYW17VmFsaWRJRH0sIFwkUGFyYW17Q29tbWVudH0sCiMgICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17VHlwZUlEfSwgXCRQYXJhbXtDcml0aWNhbGl0eX0sCiMgICAgICAgICBdLAojIyAtLS0KICAgICAgICBTUUwgPT4gJ0lOU0VSVCBJTlRPIHNlcnZpY2UgJwogICAgICAgICAgICAuICcobmFtZSwgdmFsaWRfaWQsIGNvbW1lbnRzLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5LCAnCiAgICAgICAgICAgIC4gJ3R5cGVfaWQsIGNyaXRpY2FsaXR5LCBkZXN0X3F1ZXVlaWQsIGtleXdvcmRzKSAnCiAgICAgICAgICAgIC4gJ1ZBTFVFUyAoPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCA/LCA/LCA/LCA/KScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17RnVsbE5hbWV9LCBcJFBhcmFte1ZhbGlkSUR9LCBcJFBhcmFte0NvbW1lbnR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtUeXBlSUR9LCBcJFBhcmFte0NyaXRpY2FsaXR5fSwKICAgICAgICAgICAgXCRQYXJhbXtEZXN0UXVldWVJRH0sIFwkUGFyYW17S2V5d29yZHN9LAogICAgICAgIF0sCiMgRU8gU2VydmljZUNhdGFsb2cKICAgICk7CgogICAgIyBnZXQgc2VydmljZSBpZAogICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgaWQgRlJPTSBzZXJ2aWNlIFdIRVJFIG5hbWUgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17RnVsbE5hbWV9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CiAgICBteSAkU2VydmljZUlEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFNlcnZpY2VJRCA9ICRSb3dbMF07CiAgICB9CgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgIyBJbnNlcnQgbmV3IHRpY2tldCB0eXBlIHJlbGF0aW9ucy4KICAgIFRJQ0tFVFRZUEVJRDoKICAgIGZvciBteSAkVGlja2V0VHlwZUlEICggQHsgJFBhcmFte1RpY2tldFR5cGVJRHN9IH0gKSB7CiAgICAgICAgbmV4dCBUSUNLRVRUWVBFSUQgaWYgISRUaWNrZXRUeXBlSUQ7CgogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBzZXJ2aWNlX3R5cGUgJwogICAgICAgICAgICAgICAgLiAnKHNlcnZpY2VfaWQsIHRpY2tldF90eXBlX2lkLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5KSAnCiAgICAgICAgICAgICAgICAuICdWQUxVRVMgKD8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFNlcnZpY2VJRCwgXCRUaWNrZXRUeXBlSUQsIFwkUGFyYW17VXNlcklEfSBdCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGluc2VydCBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBkYXRhCiAgICBmb3IgbXkgJExhbmd1YWdlICggc29ydCBrZXlzICV7ICRQYXJhbXtEZXNjcmlwdGlvbnN9IH0gKSB7CgogICAgICAgIG15ICVEZXNjcmlwdGlvbiA9ICV7ICRQYXJhbXtEZXNjcmlwdGlvbnN9LT57JExhbmd1YWdlfSB9OwoKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBJTlNFUlQgSU5UTyBzZXJ2aWNlX2Rlc2NyaXB0aW9uCiAgICAgICAgICAgICAgICAgICAgKHNlcnZpY2VfaWQsIGRlc2NyaXB0aW9uX3Nob3J0LCBkZXNjcmlwdGlvbl9sb25nLCBjb250ZW50X3R5cGUsIGxhbmd1YWdlKQogICAgICAgICAgICAgICAgVkFMVUVTICg/LCA/LCA/LCA/LCA/KScsCiAgICAgICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICAgICAgXCRTZXJ2aWNlSUQsCiAgICAgICAgICAgICAgICBcJERlc2NyaXB0aW9ue0Rlc2NyaXB0aW9uU2hvcnR9LAogICAgICAgICAgICAgICAgXCREZXNjcmlwdGlvbntEZXNjcmlwdGlvbkxvbmd9LAogICAgICAgICAgICAgICAgXCREZXNjcmlwdGlvbntDb250ZW50VHlwZX0sCiAgICAgICAgICAgICAgICBcJExhbmd1YWdlLAogICAgICAgICAgICBdLAogICAgICAgICk7CiAgICB9CiMgRU8gU2VydmljZUNhdGFsb2cKCiAgICAjIHJlc2V0IGNhY2hlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICk7CgogICAgbXkgJVNlcnZpY2VzID0gJFNlbGYtPlNlcnZpY2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBnZW5lcmF0ZSBjaGFpbmVkIHRyYW5zbGF0aW9ucyBhdXRvbWF0aWNhbGx5CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHJhbnNsYXRpb25zJyktPlRyYW5zbGF0ZVBhcmVudENoaWxkRWxlbWVudHMoCiAgICAgICAgU3RyaW5ncyA9PiBbIHZhbHVlcyAlU2VydmljZXMgXSwKICAgICk7CgogICAgcmV0dXJuICRTZXJ2aWNlSUQ7Cn0KCj1oZWFkMiBTZXJ2aWNlVXBkYXRlKCkKCnVwZGF0ZSBhbiBleGlzdGluZyBzZXJ2aWNlCgogICAgbXkgJFRydWUgPSAkU2VydmljZU9iamVjdC0+U2VydmljZVVwZGF0ZSgKICAgICAgICBTZXJ2aWNlSUQgPT4gMTIzLAogICAgICAgIFBhcmVudElEICA9PiAxLCAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgTmFtZSAgICAgID0+ICdTZXJ2aWNlIE5hbWUnLAogICAgICAgIFZhbGlkSUQgICA9PiAxLAogICAgICAgIENvbW1lbnQgICA9PiAnQ29tbWVudCcsICAgICMgKG9wdGlvbmFsKQogICAgICAgIFVzZXJJRCAgICA9PiAxLAojIC0tLQojIElUU01Db3JlCiMgLS0tCiAgICAgICAgVHlwZUlEICAgICAgPT4gMiwKICAgICAgICBDcml0aWNhbGl0eSA9PiAnMyBub3JtYWwnLAojIC0tLQojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgIERlc2NyaXB0aW9ucyA9PiB7CiAgICAgICAgICAgIGVuID0+IHsKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uU2hvcnQgID0+ICdTZXJ2aWNlIEEnLAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb25Mb25nICAgPT4gJ1RoaXMgaXMgU2VydmljZSBBLicsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGUgPT4gewogICAgICAgICAgICAgICAgRGVzY3JpcHRpb25TaG9ydCAgPT4gJ1NlcnZpY2UgQScsCiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbkxvbmcgICA9PiAnRGFzIGlzdCBTZXJ2aWNlIEEuJywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgVGlja2V0VHlwZUlEcyAgICA9PiBbIDEsIDIsIDMgXSwKICAgICAgICBLZXl3b3JkICAgICAgICAgID0+ICdzZXJ2aWNlIGhpbnRzIGZvciBmaWx0ZXInLAojIEVPIFNlcnZpY2VDYXRhbG9nCiAgICApOwoKPWN1dAoKc3ViIFNlcnZpY2VVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwojIyAtLS0KIyMgSVRTTUNvcmUKIyMgLS0tCiMjICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFNlcnZpY2VJRCBOYW1lIFZhbGlkSUQgVXNlcklEKSkgewojICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFNlcnZpY2VJRCBOYW1lIFZhbGlkSUQgVXNlcklEIFR5cGVJRCBDcml0aWNhbGl0eSkpIHsKIyMgLS0tCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTZXJ2aWNlSUQgTmFtZSBEZXNjcmlwdGlvbnMgVmFsaWRJRCBVc2VySUQgQ3JpdGljYWxpdHkpKSB7CiMgRU8gU2VydmljZUNhdGFsb2cKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCBjb21tZW50CiAgICAkUGFyYW17Q29tbWVudH0gfHw9ICcnOwoKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgICRQYXJhbXtEZXN0UXVldWVJRH0gfHw9ICcnOwojIEVPIFNlcnZpY2VDYXRhbG9nCgogICAgIyBjbGVhbnVwIGdpdmVuIHBhcmFtcwogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTmFtZSBDb21tZW50KSkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDaGVja0l0ZW0nKS0+U3RyaW5nQ2xlYW4oCiAgICAgICAgICAgIFN0cmluZ1JlZiAgICAgICAgID0+IFwkUGFyYW17JEFyZ3VtZW50fSwKICAgICAgICAgICAgUmVtb3ZlQWxsTmV3bGluZXMgPT4gMSwKICAgICAgICAgICAgUmVtb3ZlQWxsVGFicyAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgc2VydmljZSBuYW1lCiAgICBpZiAoICRQYXJhbXtOYW1lfSA9fiBteyA6OiB9eG1zICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgdXBkYXRlIHNlcnZpY2UhIEludmFsaWQgU2VydmljZSBuYW1lICckUGFyYW17TmFtZX0nISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgb2xkIG5hbWUgb2Ygc2VydmljZQogICAgbXkgJE9sZFNlcnZpY2VOYW1lID0gJFNlbGYtPlNlcnZpY2VMb29rdXAoCiAgICAgICAgU2VydmljZUlEID0+ICRQYXJhbXtTZXJ2aWNlSUR9LAogICAgKTsKCiAgICBpZiAoICEkT2xkU2VydmljZU5hbWUgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCB1cGRhdGUgc2VydmljZSEgU2VydmljZSAnJFBhcmFte1NlcnZpY2VJRH0nIGRvZXMgbm90IGV4aXN0LiIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgIyBjaGVjayBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBwYXJhbWV0ZXIKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RGVzY3JpcHRpb25zfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBTZXJ2aWNlIGRlc2NyaXB0aW9ucyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgZWFjaCBhcmd1bWVudCBmb3IgZWFjaCBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBsYW5ndWFnZQogICAgZm9yIG15ICRMYW5ndWFnZSAoIHNvcnQga2V5cyAleyAkUGFyYW17RGVzY3JpcHRpb25zfSB9ICkgewoKICAgICAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhEZXNjcmlwdGlvblNob3J0IENvbnRlbnRUeXBlKSkgewoKICAgICAgICAgICAgIyBlcnJvciBpZiBtZXNzYWdlIGRhdGEgaXMgaW5jb21wbGV0ZQogICAgICAgICAgICBpZiAoICEkUGFyYW17RGVzY3JpcHRpb25zfS0+eyRMYW5ndWFnZX0tPnskQXJndW1lbnR9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBzZXJ2aWNlIGRlc2NyaXB0aW9uIGFyZ3VtZW50ICckQXJndW1lbnQnIGZvciBsYW5ndWFnZSAnJExhbmd1YWdlJyEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBmaXggc29tZSBiYWQgc3R1ZmYgZnJvbSBzb21lIGJyb3dzZXJzIChPcGVyYSkhCiAgICAgICAgICAgICRQYXJhbXtEZXNjcmlwdGlvbnN9LT57JExhbmd1YWdlfS0+e0Rlc2NyaXB0aW9uTG9uZ30gfHw9ICcnOwogICAgICAgICAgICAkUGFyYW17RGVzY3JpcHRpb25zfS0+eyRMYW5ndWFnZX0tPntEZXNjcmlwdGlvbkxvbmd9ID1+IHMvKFxuXHJ8XHJcclxufFxyXG58XHIpL1xuL2c7CiAgICAgICAgfQogICAgfSAgICAKIyBFTyBTZXJ2aWNlQ2F0YWxvZwoKICAgICMgY3JlYXRlIGZ1bGwgbmFtZQogICAgJFBhcmFte0Z1bGxOYW1lfSA9ICRQYXJhbXtOYW1lfTsKCiAgICAjIGdldCBwYXJlbnQgbmFtZQogICAgaWYgKCAkUGFyYW17UGFyZW50SUR9ICkgewoKICAgICAgICAjIGxvb2t1cCBzZXJ2aWNlCiAgICAgICAgbXkgJFBhcmVudE5hbWUgPSAkU2VsZi0+U2VydmljZUxvb2t1cCgKICAgICAgICAgICAgU2VydmljZUlEID0+ICRQYXJhbXtQYXJlbnRJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRQYXJlbnROYW1lKSB7CiAgICAgICAgICAgICRQYXJhbXtGdWxsTmFtZX0gPSAkUGFyZW50TmFtZSAuICc6OicgLiAkUGFyYW17TmFtZX07CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrLCBpZiBzZWxlY3RlZCBwYXJlbnQgd2FzIGEgY2hpbGQgb2YgdGhpcyBzZXJ2aWNlCiAgICAgICAgaWYgKCAkUGFyYW17RnVsbE5hbWV9ID1+IG17IFxBICggXFEkT2xkU2VydmljZU5hbWVcRSApIDo6IH14bXMgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdDYW5cJ3QgdXBkYXRlIHNlcnZpY2UhIEludmFsaWQgcGFyZW50IHdhcyBzZWxlY3RlZC4nCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGZpbmQgZXhpc3RzIHNlcnZpY2UKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAnU0VMRUNUIGlkIEZST00gc2VydmljZSBXSEVSRSBuYW1lID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0Z1bGxOYW1lfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwogICAgbXkgJEV4aXN0czsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIGlmICggJFBhcmFte1NlcnZpY2VJRH0gbmUgJFJvd1swXSApIHsKICAgICAgICAgICAgJEV4aXN0cyA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgdXBkYXRlIHNlcnZpY2UKICAgIGlmICgkRXhpc3RzKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJBIHNlcnZpY2Ugd2l0aCB0aGUgbmFtZSBhbmQgcGFyZW50ICckUGFyYW17RnVsbE5hbWV9JyBhbHJlYWR5IGV4aXN0cy4iLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwoKICAgIH0KCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAjIERlbGV0ZSBleGlzdGluZyB0aWNrZXQgdHlwZSByZWxhdGlvbnMuCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gc2VydmljZV90eXBlIFdIRVJFIHNlcnZpY2VfaWQgPSA/OycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U2VydmljZUlEfSwgXSwKICAgICk7CiMgRU8gU2VydmljZUNhdGFsb2cKCiAgICAjIHVwZGF0ZSBzZXJ2aWNlCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiMjIC0tLQojIyBJVFNNQ29yZQojIyAtLS0KIyMgICAgICAgIFNRTCA9PiAnVVBEQVRFIHNlcnZpY2UgU0VUIG5hbWUgPSA/LCB2YWxpZF9pZCA9ID8sIGNvbW1lbnRzID0gPywgJwojIyAgICAgICAgICAgIC4gJyBjaGFuZ2VfdGltZSA9IGN1cnJlbnRfdGltZXN0YW1wLCBjaGFuZ2VfYnkgPSA/IFdIRVJFIGlkID0gPycsCiMjICAgICAgICBCaW5kID0+IFsKIyMgICAgICAgICAgICBcJFBhcmFte0Z1bGxOYW1lfSwgXCRQYXJhbXtWYWxpZElEfSwgXCRQYXJhbXtDb21tZW50fSwKIyMgICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17U2VydmljZUlEfSwKIyMgICAgICAgIF0sCiMgICAgICAgIFNRTCA9PiAnVVBEQVRFIHNlcnZpY2UgU0VUIG5hbWUgPSA/LCB2YWxpZF9pZCA9ID8sIGNvbW1lbnRzID0gPywgJwojICAgICAgICAgICAgLiAnIGNoYW5nZV90aW1lID0gY3VycmVudF90aW1lc3RhbXAsIGNoYW5nZV9ieSA9ID8sIHR5cGVfaWQgPSA/LCBjcml0aWNhbGl0eSA9ID8nCiMgICAgICAgICAgICAuICcgV0hFUkUgaWQgPSA/JywKIyAgICAgICAgQmluZCA9PiBbCiMgICAgICAgICAgICBcJFBhcmFte0Z1bGxOYW1lfSwgXCRQYXJhbXtWYWxpZElEfSwgXCRQYXJhbXtDb21tZW50fSwKIyAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtUeXBlSUR9LCBcJFBhcmFte0NyaXRpY2FsaXR5fSwgXCRQYXJhbXtTZXJ2aWNlSUR9LAojICAgICAgICBdLAojIyAtLS0KICAgICAgICBTUUwgPT4gJ1VQREFURSBzZXJ2aWNlIFNFVCBuYW1lID0gPywgdmFsaWRfaWQgPSA/LCBjb21tZW50cyA9ID8sICcKICAgICAgICAgICAgLiAnIGNoYW5nZV90aW1lID0gY3VycmVudF90aW1lc3RhbXAsIGNoYW5nZV9ieSA9ID8sIGNyaXRpY2FsaXR5ID0gPywgJwogICAgICAgICAgICAuICcgZGVzdF9xdWV1ZWlkID0gPywga2V5d29yZHMgPSA/JwogICAgICAgICAgICAuICcgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtGdWxsTmFtZX0sIFwkUGFyYW17VmFsaWRJRH0sIFwkUGFyYW17Q29tbWVudH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtDcml0aWNhbGl0eX0sCiAgICAgICAgICAgIFwkUGFyYW17RGVzdFF1ZXVlSUR9LCBcJFBhcmFte0tleXdvcmRzfSwgXCRQYXJhbXtTZXJ2aWNlSUR9LAogICAgICAgIF0sCiMgRU8gU2VydmljZUNhdGFsb2cKICAgICk7CgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgIyBJbnNlcnQgbmV3IHRpY2tldCB0eXBlIHJlbGF0aW9ucy4KICAgIFRJQ0tFVFRZUEVJRDoKICAgIGZvciBteSAkVGlja2V0VHlwZUlEICggQHsgJFBhcmFte1RpY2tldFR5cGVJRHN9IH0gKSB7CiAgICAgICAgbmV4dCBUSUNLRVRUWVBFSUQgaWYgISRUaWNrZXRUeXBlSUQ7CiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gJ0lOU0VSVCBJTlRPIHNlcnZpY2VfdHlwZSAnCiAgICAgICAgICAgICAgICAuICcoc2VydmljZV9pZCwgdGlja2V0X3R5cGVfaWQsIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnkpICcKICAgICAgICAgICAgICAgIC4gJ1ZBTFVFUyAoPywgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U2VydmljZUlEfSwgXCRUaWNrZXRUeXBlSUQsIFwkUGFyYW17VXNlcklEfSBdCiAgICAgICAgKTsKICAgIH0KIyBFTyBTZXJ2aWNlQ2F0YWxvZwoKICAgIG15ICRMaWtlU2VydmljZSA9ICREQk9iamVjdC0+UXVvdGUoICRPbGRTZXJ2aWNlTmFtZSwgJ0xpa2UnICkgLiAnOjolJzsKCiAgICAjIGZpbmQgYWxsIGNoaWxkcwogICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgPT4gIlNFTEVDVCBpZCwgbmFtZSBGUk9NIHNlcnZpY2UgV0hFUkUgbmFtZSBMSUtFID8iLAogICAgICAgIEJpbmQgPT4gWyBcJExpa2VTZXJ2aWNlIF0sCiAgICApOwoKICAgIG15IEBDaGlsZHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBteSAlQ2hpbGQ7CiAgICAgICAgJENoaWxke1NlcnZpY2VJRH0gPSAkUm93WzBdOwogICAgICAgICRDaGlsZHtOYW1lfSAgICAgID0gJFJvd1sxXTsKICAgICAgICBwdXNoIEBDaGlsZHMsIFwlQ2hpbGQ7CiAgICB9CgogICAgIyB1cGRhdGUgY2hpbGRzCiAgICBmb3IgbXkgJENoaWxkIChAQ2hpbGRzKSB7CiAgICAgICAgJENoaWxkLT57TmFtZX0gPX4gc3sgXEEgKCBcUSRPbGRTZXJ2aWNlTmFtZVxFICkgOjogfXskUGFyYW17RnVsbE5hbWV9Ojp9eG1zOwogICAgICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gJ1VQREFURSBzZXJ2aWNlIFNFVCBuYW1lID0gPyBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRDaGlsZC0+e05hbWV9LCBcJENoaWxkLT57U2VydmljZUlEfSBdLAogICAgICAgICk7CiAgICB9CgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgIyBEZWxldGUgZXhpc3Rpbmcgc2VydmljZSBkZXNjcmlwdGlvbnMgZGF0YS4KICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gc2VydmljZV9kZXNjcmlwdGlvbiBXSEVSRSBzZXJ2aWNlX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U2VydmljZUlEfSBdLAogICAgKTsKCiAgICAjIEluc2VydCBuZXcgc2VydmljZSBkZXNjcmlwdGlvbnMgZGF0YS4KICAgIGZvciBteSAkTGFuZ3VhZ2UgKCBzb3J0IGtleXMgJXsgJFBhcmFte0Rlc2NyaXB0aW9uc30gLy8ge30gfSApIHsKCiAgICAgICAgbXkgJURlc2NyaXB0aW9ucyA9ICV7ICRQYXJhbXtEZXNjcmlwdGlvbnN9LT57JExhbmd1YWdlfSB9OwoKICAgICAgICAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgSU5TRVJUIElOVE8gc2VydmljZV9kZXNjcmlwdGlvbgogICAgICAgICAgICAgICAgICAgIChzZXJ2aWNlX2lkLCBkZXNjcmlwdGlvbl9zaG9ydCwgZGVzY3JpcHRpb25fbG9uZywgY29udGVudF90eXBlLCBsYW5ndWFnZSkKICAgICAgICAgICAgICAgIFZBTFVFUyAoPywgPywgPywgPywgPyknLAogICAgICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgICAgIFwkUGFyYW17U2VydmljZUlEfSwKICAgICAgICAgICAgICAgIFwkRGVzY3JpcHRpb25ze0Rlc2NyaXB0aW9uU2hvcnR9LAogICAgICAgICAgICAgICAgXCREZXNjcmlwdGlvbnN7RGVzY3JpcHRpb25Mb25nfSwKICAgICAgICAgICAgICAgIFwkRGVzY3JpcHRpb25ze0NvbnRlbnRUeXBlfSwKICAgICAgICAgICAgICAgIFwkTGFuZ3VhZ2UsCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgIH0gICAgCiMgRU8gU2VydmljZUNhdGFsb2cKCiAgICAjIHJlc2V0IGNhY2hlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICk7CgogICAgbXkgJVNlcnZpY2VzID0gJFNlbGYtPlNlcnZpY2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBnZW5lcmF0ZSBjaGFpbmVkIHRyYW5zbGF0aW9ucyBhdXRvbWF0aWNhbGx5CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHJhbnNsYXRpb25zJyktPlRyYW5zbGF0ZVBhcmVudENoaWxkRWxlbWVudHMoCiAgICAgICAgU3RyaW5ncyA9PiBbIHZhbHVlcyAlU2VydmljZXMgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBTZXJ2aWNlU2VhcmNoKCkKCnJldHVybiBzZXJ2aWNlIGlkcyBhcyBhbiBhcnJheQoKICAgIG15IEBTZXJ2aWNlTGlzdCA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlU2VhcmNoKAogICAgICAgIE5hbWUgICA9PiAnU2VydmljZSBOYW1lJywgIyAob3B0aW9uYWwpCiAgICAgICAgTGltaXQgID0+IDEyMiwgICAgICAgICAgICAjIChvcHRpb25hbCkgZGVmYXVsdCAxMDAwCiAgICAgICAgVXNlcklEID0+IDEsCiMgLS0tCiMgSVRTTUNvcmUKIyAtLS0KICAgICAgICBUeXBlSURzICAgICAgID0+IDIsCiAgICAgICAgQ3JpdGljYWxpdGllcyA9PiBbICcyIGxvdycsICczIG5vcm1hbCcgXSwKIyAtLS0KICAgICk7Cgo9Y3V0CgpzdWIgU2VydmljZVNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCBsaW1pdAogICAgJFBhcmFte0xpbWl0fSB8fD0gMTAwMDsKCiAgICAjIGNyZWF0ZSBzcWwgcXVlcnkKICAgIG15ICRTUUwgPSAiU0VMRUNUIGlkIEZST00gc2VydmljZSBXSEVSRSB2YWxpZF9pZCBJTiAoICR7XChqb2luICcsICcsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZElEc0dldCgpKX0gKSI7CiAgICBteSBAQmluZDsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIGlmICggJFBhcmFte05hbWV9ICkgewoKICAgICAgICAjIHF1b3RlCiAgICAgICAgJFBhcmFte05hbWV9ID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte05hbWV9LCAnTGlrZScgKTsKCiAgICAgICAgIyByZXBsYWNlICogd2l0aCAlIGFuZCBjbGVhbiB0aGUgc3RyaW5nCiAgICAgICAgJFBhcmFte05hbWV9ID1+IHN7IFwqKyB9eyV9eG1zZzsKICAgICAgICAkUGFyYW17TmFtZX0gPX4gc3sgJSsgfXslfXhtc2c7CiAgICAgICAgbXkgJExpa2VTdHJpbmcgPSAnJScgLiAkUGFyYW17TmFtZX0gLiAnJSc7CiAgICAgICAgcHVzaCBAQmluZCwgXCRMaWtlU3RyaW5nOwoKICAgICAgICAkU1FMIC49ICIgQU5EIG5hbWUgTElLRSA/IjsKICAgIH0KIyAtLS0KIyBJVFNNQ29yZQojIC0tLQogICAgIyBhZGQgdHlwZSBpZHMKICAgIGlmICggJFBhcmFte1R5cGVJRHN9ICYmIHJlZiAkUGFyYW17VHlwZUlEc30gZXEgJ0FSUkFZJyAmJiBAeyAkUGFyYW17VHlwZUlEc30gfSApIHsKCiAgICAgICAgIyBxdW90ZSBhcyBpbnRlZ2VyCiAgICAgICAgZm9yIG15ICRUeXBlSUQgKCBAeyAkUGFyYW17VHlwZUlEc30gfSApIHsKICAgICAgICAgICAgJFR5cGVJRCA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFR5cGVJRCwgJ0ludGVnZXInICk7CiAgICAgICAgfQoKICAgICAgICAkU1FMIC49ICIgQU5EIHR5cGVfaWQgSU4gKCIgLiBqb2luKCcsICcsIEB7ICRQYXJhbXtUeXBlSURzfSB9KSAuICIpICI7CiAgICB9CgogICAgIyBhZGQgY3JpdGljYWxpdGllcwogICAgaWYgKCRQYXJhbXtDcml0aWNhbGl0aWVzfSAmJiByZWYgJFBhcmFte0NyaXRpY2FsaXRpZXN9IGVxICdBUlJBWScgJiYgQHsgJFBhcmFte0NyaXRpY2FsaXRpZXN9IH0gKSB7CgogICAgICAgICMgcXVvdGUgYW5kIHdyYXAgaW4gc2luZ2xlIHF1b3RlcwogICAgICAgIGZvciBteSAkQ3JpdGljYWxpdHkgKCBAeyAkUGFyYW17Q3JpdGljYWxpdGllc30gfSApIHsKICAgICAgICAgICAgJENyaXRpY2FsaXR5ID0gIiciIC4gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkQ3JpdGljYWxpdHkgKSAuICInIjsKICAgICAgICB9CgogICAgICAgICRTUUwgLj0gIkFORCBjcml0aWNhbGl0eSBJTiAoIiAuIGpvaW4oJywgJywgQHsgJFBhcmFte0NyaXRpY2FsaXRpZXN9IH0pIC4gIikgIjsKICAgIH0KIyAtLS0KCiAgICAkU1FMIC49ICcgT1JERVIgQlkgbmFtZSc7CgogICAgIyBzZWFyY2ggc2VydmljZSBpbiBkYgogICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgPT4gJFNRTCwKICAgICAgICBCaW5kID0+IFxAQmluZCwKICAgICk7CgogICAgbXkgQFNlcnZpY2VMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBAU2VydmljZUxpc3QsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIEBTZXJ2aWNlTGlzdDsKfQoKPWhlYWQyIEN1c3RvbWVyVXNlclNlcnZpY2VNZW1iZXJMaXN0KCkKCnJldHVybnMgYSBsaXN0IG9mIGN1c3RvbWVydXNlci9zZXJ2aWNlIG1lbWJlcnMKCiAgICBTZXJ2aWNlSUQ6IHNlcnZpY2UgaWQKICAgIEN1c3RvbWVyVXNlckxvZ2luOiBjdXN0b21lciB1c2VyIGxvZ2luCiAgICBEZWZhdWx0U2VydmljZXM6IGFjdGl2YXRlIG9yIGRlYWN0aXZhdGUgZGVmYXVsdCBzZXJ2aWNlcwoKICAgIFJlc3VsdDogSEFTSCAtPiByZXR1cm5zIGEgaGFzaCBvZiBrZXkgPT4gc2VydmljZSBpZCwgdmFsdWUgPT4gc2VydmljZSBuYW1lCiAgICAgICAgICAgIE5hbWUgLT4gcmV0dXJucyBhbiBhcnJheSBvZiB1c2VyIG5hbWVzCiAgICAgICAgICAgIElEICAgLT4gcmV0dXJucyBhbiBhcnJheSBvZiB1c2VyIGlkcwoKICAgIEV4YW1wbGUgKGdldCBzZXJ2aWNlcyBvZiBjdXN0b21lciB1c2VyKToKCiAgICAkU2VydmljZU9iamVjdC0+Q3VzdG9tZXJVc2VyU2VydmljZU1lbWJlckxpc3QoCiAgICAgICAgQ3VzdG9tZXJVc2VyTG9naW4gPT4gJ1Rlc3QnLAogICAgICAgIFJlc3VsdCAgICAgICAgICAgID0+ICdIQVNIJywKICAgICAgICBEZWZhdWx0U2VydmljZXMgICA9PiAwLAogICAgKTsKCiAgICBFeGFtcGxlIChnZXQgY3VzdG9tZXIgdXNlciBvZiBzZXJ2aWNlKToKCiAgICAkU2VydmljZU9iamVjdC0+Q3VzdG9tZXJVc2VyU2VydmljZU1lbWJlckxpc3QoCiAgICAgICAgU2VydmljZUlEID0+ICRJRCwKICAgICAgICBSZXN1bHQgICAgPT4gJ0hBU0gnLAogICAgKTsKCj1jdXQKCnN1YiBDdXN0b21lclVzZXJTZXJ2aWNlTWVtYmVyTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17UmVzdWx0fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgUmVzdWx0IScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCAob25seSAxIG9yIDAgaXMgYWxsb3dlZCB0byBjb3JyZWN0bHkgc2V0IHRoZSBjYWNoZSBrZXkpCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtEZWZhdWx0U2VydmljZXN9IHx8ICRQYXJhbXtEZWZhdWx0U2VydmljZXN9ICkgewogICAgICAgICRQYXJhbXtEZWZhdWx0U2VydmljZXN9ID0gMTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRQYXJhbXtEZWZhdWx0U2VydmljZXN9ID0gMDsKICAgIH0KCiAgICAjIGdldCBvcHRpb25zIGZvciBkZWZhdWx0IHNlcnZpY2VzIGZvciB1bmtub3duIGN1c3RvbWVycwogICAgbXkgJERlZmF1bHRTZXJ2aWNlVW5rbm93bkN1c3RvbWVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdUaWNrZXQ6OlNlcnZpY2U6OkRlZmF1bHQ6OlVua25vd25DdXN0b21lcicpOwogICAgaWYgKAogICAgICAgICREZWZhdWx0U2VydmljZVVua25vd25DdXN0b21lcgogICAgICAgICYmICRQYXJhbXtEZWZhdWx0U2VydmljZXN9CiAgICAgICAgJiYgISRQYXJhbXtTZXJ2aWNlSUR9CiAgICAgICAgJiYgISRQYXJhbXtDdXN0b21lclVzZXJMb2dpbn0KICAgICAgICApCiAgICB7CiAgICAgICAgJFBhcmFte0N1c3RvbWVyVXNlckxvZ2lufSA9ICc8REVGQVVMVD4nOwogICAgfQoKICAgICMgY2hlY2sgbW9yZSBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtTZXJ2aWNlSUR9ICYmICEkUGFyYW17Q3VzdG9tZXJVc2VyTG9naW59ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTZXJ2aWNlSUQgb3IgQ3VzdG9tZXJVc2VyTG9naW4hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNyZWF0ZSBjYWNoZSBrZXkKICAgIG15ICRDYWNoZUtleSA9ICdDdXN0b21lclVzZXJTZXJ2aWNlTWVtYmVyTGlzdDo6JyAuICRQYXJhbXtSZXN1bHR9IC4gJzo6JwogICAgICAgIC4gJ0RlZmF1bHRTZXJ2aWNlczo6JyAuICRQYXJhbXtEZWZhdWx0U2VydmljZXN9IC4gJzo6JzsKICAgIGlmICggJFBhcmFte1NlcnZpY2VJRH0gKSB7CiAgICAgICAgJENhY2hlS2V5IC49ICdTZXJ2aWNlSUQ6OicgLiAkUGFyYW17U2VydmljZUlEfTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte0N1c3RvbWVyVXNlckxvZ2lufSApIHsKICAgICAgICAkQ2FjaGVLZXkgLj0gJ0N1c3RvbWVyVXNlckxvZ2luOjonIC4gJFBhcmFte0N1c3RvbWVyVXNlckxvZ2lufTsKICAgIH0KCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkQ2FjaGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+R2V0KAogICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKICAgIGlmICggJFBhcmFte1Jlc3VsdH0gZXEgJ0hBU0gnICkgewogICAgICAgIHJldHVybiAleyRDYWNoZX0gaWYgcmVmICRDYWNoZSBlcSAnSEFTSCc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gQHskQ2FjaGV9IGlmIHJlZiAkQ2FjaGUgZXEgJ0FSUkFZJzsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZGIgcXVvdGUKICAgIGZvciAoIHNvcnQga2V5cyAlUGFyYW0gKSB7CiAgICAgICAgJFBhcmFteyRffSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXskX30gKTsKICAgIH0KICAgIGZvciAocXcoU2VydmljZUlEKSkgewogICAgICAgICRQYXJhbXskX30gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17JF99LCAnSW50ZWdlcicgKTsKICAgIH0KCiAgICAjIHNxbAogICAgbXkgJURhdGE7CiAgICBteSBARGF0YTsKICAgIG15ICRTUUwgPSAnU0VMRUNUIHNjdS5zZXJ2aWNlX2lkLCBzY3UuY3VzdG9tZXJfdXNlcl9sb2dpbiwgcy5uYW1lICcKICAgICAgICAuICcgRlJPTSAnCiAgICAgICAgLiAnIHNlcnZpY2VfY3VzdG9tZXJfdXNlciBzY3UsIHNlcnZpY2UgcycKICAgICAgICAuICcgV0hFUkUgJwogICAgICAgIC4gIiBzLnZhbGlkX2lkIElOICggJHtcKGpvaW4gJywgJywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkSURzR2V0KCkpfSApIEFORCAiCiAgICAgICAgLiAnIHMuaWQgPSBzY3Uuc2VydmljZV9pZCBBTkQgJzsKCiAgICBpZiAoICRQYXJhbXtTZXJ2aWNlSUR9ICkgewogICAgICAgICRTUUwgLj0gIiBzY3Uuc2VydmljZV9pZCA9ICRQYXJhbXtTZXJ2aWNlSUR9IjsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte0N1c3RvbWVyVXNlckxvZ2lufSApIHsKICAgICAgICAkU1FMIC49ICIgc2N1LmN1c3RvbWVyX3VzZXJfbG9naW4gPSAnJFBhcmFte0N1c3RvbWVyVXNlckxvZ2lufSciOwogICAgfQoKICAgICREQk9iamVjdC0+UHJlcGFyZSggU1FMID0+ICRTUUwgKTsKCiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKCiAgICAgICAgbXkgJFZhbHVlID0gJyc7CiAgICAgICAgaWYgKCAkUGFyYW17U2VydmljZUlEfSApIHsKICAgICAgICAgICAgJERhdGF7ICRSb3dbMV0gfSA9ICRSb3dbMF07CiAgICAgICAgICAgICRWYWx1ZSA9ICRSb3dbMF07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkRGF0YXsgJFJvd1swXSB9ID0gJFJvd1syXTsKICAgICAgICB9CiAgICB9CiAgICBpZiAoCiAgICAgICAgJFBhcmFte0N1c3RvbWVyVXNlckxvZ2lufQogICAgICAgICYmICRQYXJhbXtDdXN0b21lclVzZXJMb2dpbn0gbmUgJzxERUZBVUxUPicKICAgICAgICAmJiAkUGFyYW17RGVmYXVsdFNlcnZpY2VzfQogICAgICAgICYmICFrZXlzKCVEYXRhKQogICAgICAgICkKICAgIHsKICAgICAgICAlRGF0YSA9ICRTZWxmLT5DdXN0b21lclVzZXJTZXJ2aWNlTWVtYmVyTGlzdCgKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyTG9naW4gPT4gJzxERUZBVUxUPicsCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgID0+ICdIQVNIJywKICAgICAgICAgICAgRGVmYXVsdFNlcnZpY2VzICAgPT4gMCwKICAgICAgICApOwogICAgfQoKICAgICMgcmV0dXJuIHJlc3VsdAogICAgaWYgKCAkUGFyYW17UmVzdWx0fSBlcSAnSEFTSCcgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgICAgICBWYWx1ZSA9PiBcJURhdGEsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJURhdGE7CiAgICB9CiAgICBpZiAoICRQYXJhbXtSZXN1bHR9IGVxICdOYW1lJyApIHsKICAgICAgICBARGF0YSA9IHZhbHVlcyAlRGF0YTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBEYXRhID0ga2V5cyAlRGF0YTsKICAgIH0KICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICBWYWx1ZSA9PiBcQERhdGEsCiAgICApOwogICAgcmV0dXJuIEBEYXRhOwp9Cgo9aGVhZDIgQ3VzdG9tZXJVc2VyU2VydmljZU1lbWJlckFkZCgpCgp0byBhZGQgYSBtZW1iZXIgdG8gYSBzZXJ2aWNlCgppZiAnQWN0aXZlJyBpcyAwLCB0aGUgY3VzdG9tZXIgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzZXJ2aWNlCgogICAgJFNlcnZpY2VPYmplY3QtPkN1c3RvbWVyVXNlclNlcnZpY2VNZW1iZXJBZGQoCiAgICAgICAgQ3VzdG9tZXJVc2VyTG9naW4gPT4gJ1Rlc3QxJywKICAgICAgICBTZXJ2aWNlSUQgICAgICAgICA9PiA2LAogICAgICAgIEFjdGl2ZSAgICAgICAgICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICAgICAgICAgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBDdXN0b21lclVzZXJTZXJ2aWNlTWVtYmVyQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEN1c3RvbWVyVXNlckxvZ2luIFNlcnZpY2VJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBkZWxldGUgZXhpc3RpbmcgcmVsYXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBzZXJ2aWNlX2N1c3RvbWVyX3VzZXIgV0hFUkUgY3VzdG9tZXJfdXNlcl9sb2dpbiA9ID8gQU5EIHNlcnZpY2VfaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDdXN0b21lclVzZXJMb2dpbn0sIFwkUGFyYW17U2VydmljZUlEfSBdLAogICAgKTsKCiAgICAjIHJldHVybiBpZiByZWxhdGlvbiBpcyBub3QgYWN0aXZlCiAgICBpZiAoICEkUGFyYW17QWN0aXZlfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBpbnNlcnQgbmV3IHJlbGF0aW9uCiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBzZXJ2aWNlX2N1c3RvbWVyX3VzZXIgJwogICAgICAgICAgICAuICcoY3VzdG9tZXJfdXNlcl9sb2dpbiwgc2VydmljZV9pZCwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSkgJwogICAgICAgICAgICAuICdWQUxVRVMgKD8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q3VzdG9tZXJVc2VyTG9naW59LCBcJFBhcmFte1NlcnZpY2VJRH0sIFwkUGFyYW17VXNlcklEfSBdCiAgICApOwoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgKTsKCiAgICByZXR1cm4gJFN1Y2Nlc3M7Cn0KCj1oZWFkMiBTZXJ2aWNlUHJlZmVyZW5jZXNTZXQoKQoKc2V0IHNlcnZpY2UgcHJlZmVyZW5jZXMKCiAgICAkU2VydmljZU9iamVjdC0+U2VydmljZVByZWZlcmVuY2VzU2V0KAogICAgICAgIFNlcnZpY2VJRCA9PiAxMjMsCiAgICAgICAgS2V5ICAgICAgID0+ICdVc2VyQ29tbWVudCcsCiAgICAgICAgVmFsdWUgICAgID0+ICdzb21lIGNvbW1lbnQnLAogICAgICAgIFVzZXJJRCAgICA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIFNlcnZpY2VQcmVmZXJlbmNlc1NldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT57UHJlZmVyZW5jZXNPYmplY3R9LT5TZXJ2aWNlUHJlZmVyZW5jZXNTZXQoJVBhcmFtKTsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICk7CiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFNlcnZpY2VQcmVmZXJlbmNlc0dldCgpCgpnZXQgc2VydmljZSBwcmVmZXJlbmNlcwoKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgU2VydmljZUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBTZXJ2aWNlUHJlZmVyZW5jZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJFNlbGYtPntQcmVmZXJlbmNlc09iamVjdH0tPlNlcnZpY2VQcmVmZXJlbmNlc0dldCglUGFyYW0pOwp9Cgo9aGVhZDIgU2VydmljZVBhcmVudHNHZXQoKQoKcmV0dXJuIGFuIG9yZGVyZWQgbGlzdCBhbGwgcGFyZW50IHNlcnZpY2UgSURzIGZvciB0aGUgZ2l2ZW4gc2VydmljZSBmcm9tIHRoZSByb290IHBhcmVudCB0byB0aGUKY3VycmVudCBzZXJ2aWNlIHBhcmVudAoKICAgIG15ICRTZXJ2aWNlUGFyZW50c0xpc3QgPSAkU2VydmljZU9iamVjdC0+U2VydmljZVBhcmVudHNHZXQoCiAgICAgICAgU2VydmljZUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJucwoKICAgICRTZXJ2aWNlUGFyZW50c0xpc3QgPSBbIDEsIDIsIC4uLl07Cgo9Y3V0CgpzdWIgU2VydmljZVBhcmVudHNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFVzZXJJRCBTZXJ2aWNlSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCAkTmVlZGVkIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyByZWFkIGNhY2hlCiAgICBteSAkQ2FjaGVLZXkgPSAnU2VydmljZVBhcmVudHNHZXQ6OicgLiAkUGFyYW17U2VydmljZUlEfTsKICAgIG15ICRDYWNoZSAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5HZXQoCiAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwogICAgcmV0dXJuICRDYWNoZSBpZiByZWYgJENhY2hlOwoKICAgICMgZ2V0IHRoZSBsaXN0IG9mIHNlcnZpY2VzCiAgICBteSAkU2VydmljZUxpc3QgPSAkU2VsZi0+U2VydmljZUxpc3RHZXQoCiAgICAgICAgVmFsaWQgID0+IDAsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgICMgZ2V0IGEgc2VydmljZSBsb29rdXAgdGFibGUKICAgIG15ICVTZXJ2aWNlTG9va3VwOwogICAgU0VSVklDRToKICAgIGZvciBteSAkU2VydmljZURhdGEgKCBAeyRTZXJ2aWNlTGlzdH0gKSB7CiAgICAgICAgbmV4dCBTRVJWSUNFIGlmICEkU2VydmljZURhdGE7CiAgICAgICAgbmV4dCBTRVJWSUNFIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkU2VydmljZURhdGEpOwogICAgICAgIG5leHQgU0VSVklDRSBpZiAhJFNlcnZpY2VEYXRhLT57U2VydmljZUlEfTsKCiAgICAgICAgJFNlcnZpY2VMb29rdXB7ICRTZXJ2aWNlRGF0YS0+e1NlcnZpY2VJRH0gfSA9ICRTZXJ2aWNlRGF0YTsKICAgIH0KCiAgICAjIGV4aXQgaWYgU2VydmljZUlEIGlzIGludmFsaWQKICAgIHJldHVybiBpZiAhJFNlcnZpY2VMb29rdXB7ICRQYXJhbXtTZXJ2aWNlSUR9IH07CgogICAgIyB0byBzdG9yZSB0aGUgcmV0dXJuIHN0cnVjdHVyZQogICAgbXkgQFNlcnZpY2VQYXJlbnRzOwoKICAgICMgZ2V0IHRoZSBTZXJ2aWNlUGFyZW50SUQgZnJvbSB0aGUgcmVxdWVzdGVkIHNlcnZpY2UKICAgIG15ICRTZXJ2aWNlUGFyZW50SUQgPSAkU2VydmljZUxvb2t1cHsgJFBhcmFte1NlcnZpY2VJRH0gfS0+e1BhcmVudElEfTsKCiAgICAjIGdldCBhbGwgcGFydGVudHMgZm9yIHRoZSByZXF1ZXN0ZWQgc2VydmljZQogICAgd2hpbGUgKCRTZXJ2aWNlUGFyZW50SUQpIHsKCiAgICAgICAgIyBhZGQgc2VydmljZSBwYXJlbnQgSUQgdG8gdGhlIHJldHVybiBzdHJ1Y3R1cmUKICAgICAgICBwdXNoIEBTZXJ2aWNlUGFyZW50cywgJFNlcnZpY2VQYXJlbnRJRDsKCiAgICAgICAgIyBzZXQgbmV4dCBTZXJ2aWNlUGFyZW50SUQgKHRoZSBwYXJlbnQgb2YgdGhlIGN1cnJlbnQgcGFyZW50KQogICAgICAgICRTZXJ2aWNlUGFyZW50SUQgPSAkU2VydmljZUxvb2t1cHskU2VydmljZVBhcmVudElEfS0+e1BhcmVudElEfSB8fCAwOwoKICAgIH0KCiAgICAjIHJldmVyc2UgdGhlIHJldHVybiBhcnJheSB0byBnZXQgdGhlIGxpc3Qgb3JkZXJlZCBmcm9tIG9sZCB0byB5b3VuZyAoaW4gcGFyZW50IGNvbnRleHQpCiAgICBteSBARGF0YSA9IHJldmVyc2UgQFNlcnZpY2VQYXJlbnRzOwoKICAgICMgc2V0IGNhY2hlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+U2V0KAogICAgICAgIFR5cGUgID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gXEBEYXRhLAogICAgKTsKCiAgICByZXR1cm4gXEBEYXRhOwp9Cgo9aGVhZDIgR2V0QWxsQ3VzdG9tU2VydmljZXMoKQoKZ2V0IGFsbCBjdXN0b20gc2VydmljZXMgb2Ygb25lIHVzZXIKCiAgICBteSBAU2VydmljZXMgPSAkU2VydmljZU9iamVjdC0+R2V0QWxsQ3VzdG9tU2VydmljZXMoIFVzZXJJRCA9PiAxMjMgKTsKCj1jdXQKCnN1YiBHZXRBbGxDdXN0b21TZXJ2aWNlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlS2V5ID0gJ0dldEFsbEN1c3RvbVNlcnZpY2VzOjonIC4gJFBhcmFte1VzZXJJRH07CiAgICBteSAkQ2FjaGUgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+R2V0KAogICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKCiAgICByZXR1cm4gQHskQ2FjaGV9IGlmICRDYWNoZTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgc2VhcmNoIGFsbCBjdXN0b20gc2VydmljZXMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBzZXJ2aWNlX2lkCiAgICAgICAgICAgIEZST00gcGVyc29uYWxfc2VydmljZXMKICAgICAgICAgICAgV0hFUkUgdXNlcl9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1VzZXJJRH0gXSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSBAU2VydmljZUlEczsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQFNlcnZpY2VJRHMsICRSb3dbMF07CiAgICB9CgogICAgIyBzZXQgY2FjaGUKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICBWYWx1ZSA9PiBcQFNlcnZpY2VJRHMsCiAgICApOwoKICAgIHJldHVybiBAU2VydmljZUlEczsKfQojIC0tLQojIElUU01Db3JlCiMgLS0tCgo9aGVhZDIgX1NlcnZpY2VHZXRDdXJyZW50SW5jaWRlbnRTdGF0ZSgpCgpSZXR1cm5zIGEgaGFzaCB3aXRoIHRoZSBvcmlnaW5hbCBzZXJ2aWNlIGRhdGEsCmVuaGFuY2VkIHdpdGggYWRkaXRpb25hbCBzZXJ2aWNlIGRhdGEgYWJvdXQgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUsCmJhc2VkIG9uIGNvbmZpZ3VyYXRpb24gaXRlbXMgYW5kIG90aGVyIHNlcnZpY2VzLgoKICAgICVTZXJ2aWNlRGF0YSA9ICRTZXJ2aWNlT2JqZWN0LT5fU2VydmljZUdldEN1cnJlbnRJbmNpZGVudFN0YXRlKAogICAgICAgIFNlcnZpY2VEYXRhID0+IFwlU2VydmljZURhdGEsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gXCVQcmVmZXJlbmNlcywKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBfU2VydmljZUdldEN1cnJlbnRJbmNpZGVudFN0YXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFNlcnZpY2VEYXRhIFByZWZlcmVuY2VzIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFNlcnZpY2VEYXRhIFByZWZlcmVuY2VzKSkgewogICAgICAgIGlmICggcmVmICRQYXJhbXskQXJndW1lbnR9IG5lICdIQVNIJyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIiRBcmd1bWVudCBtdXN0IGJlIGEgaGFzaCByZWZlcmVuY2UhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIG1ha2UgbG9jYWwgY29waWVzCiAgICBteSAlU2VydmljZURhdGEgPSAleyAkUGFyYW17U2VydmljZURhdGF9IH07CiAgICBteSAlUHJlZmVyZW5jZXMgPSAleyAkUGFyYW17UHJlZmVyZW5jZXN9IH07CgogICAgIyBnZXQgc2VydmljZSB0eXBlIGxpc3QKICAgIG15ICRTZXJ2aWNlVHlwZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OlNlcnZpY2U6OlR5cGUnLAogICAgKTsKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgIGlmICggJFNlcnZpY2VEYXRhe1R5cGVJRH0gKSB7CiAgICAgICAgJFNlcnZpY2VEYXRhe1R5cGV9ID0gJFNlcnZpY2VUeXBlTGlzdC0+eyAkU2VydmljZURhdGF7VHlwZUlEfSB9IHx8ICcnOwogICAgfQojIEVPIFNlcnZpY2VDYXRhbG9nCgogICAgIyBzZXQgZGVmYXVsdCBpbmNpZGVudCBzdGF0ZSB0eXBlCiAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlVHlwZX0gPSAnb3BlcmF0aW9uYWwnOwoKICAgICMgZ2V0IElUU00gbW9kdWxlIGRpcmVjdG9yeQogICAgbXkgJENvbmZpZ0l0ZW1Nb2R1bGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKSAuICcvS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS5wbSc7CgogICAgIyBjaGVjayBpZiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQgcGFja2FnZSBpcyBpbnN0YWxsZWQKICAgIGlmICggLWUgJENvbmZpZ0l0ZW1Nb2R1bGUgKSB7CgogICAgICAgICMgY2hlY2sgaWYgYSBwcmVmZXJlbmNlIHNldHRpbmcgZm9yIEN1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzIGV4aXN0cwogICAgICAgIGlmICggJFByZWZlcmVuY2Vze0N1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzfSApIHsKCiAgICAgICAgICAgICMgc2V0IGRlZmF1bHQgaW5jaWRlbnQgc3RhdGUgdHlwZSBmcm9tIHNlcnZpY2UgcHJlZmVyZW5jZXMgJ0N1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzJwogICAgICAgICAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlVHlwZX0gPSAkUHJlZmVyZW5jZXN7Q3VySW5jaVN0YXRlVHlwZUZyb21DSXN9OwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIHByZWZlcmVuY2VzIHNldHRpbmcgZm9yIEN1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIGdldCBpbmNpZGVudCBsaW5rIHR5cGVzIGFuZCBkaXJlY3Rpb25zIGZyb20gY29uZmlnCiAgICAgICAgICAgIG15ICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdJVFNNOjpDb3JlOjpJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uJyk7CgogICAgICAgICAgICAjIHRvIHN0b3JlIGFsbCBsaW5rZWQgY29uZmlnIGl0ZW0gaWRzIG9mIHRoaXMgc2VydmljZSAoZm9yIGFsbCBjb25maWd1cmVkIGxpbmsgdHlwZXMpCiAgICAgICAgICAgIG15ICVBbGxMaW5rZWRDb25maWdJdGVtSURzOwoKICAgICAgICAgICAgTElOS1RZUEU6CiAgICAgICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXsgJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24gfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgZGlyZWN0aW9uCiAgICAgICAgICAgICAgICBteSAkTGlua0RpcmVjdGlvbiA9ICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uLT57JExpbmtUeXBlfTsKCiAgICAgICAgICAgICAgICAjIHJldmVyc2UgdGhlIGxpbmsgZGlyZWN0aW9uLCBhcyB0aGlzIGlzIHRoZSBwZXJzcGVjdGl2ZSBmcm9tIHRoZSBzZXJ2aWNlCiAgICAgICAgICAgICAgICAjIG5vIG5lZWQgdG8gcmV2ZXJzZSBpZiBkaXJlY3Rpb24gaXMgJ0JvdGgnCiAgICAgICAgICAgICAgICBpZiAoICRMaW5rRGlyZWN0aW9uIGVxICdTb3VyY2UnICkgewogICAgICAgICAgICAgICAgICAgICRMaW5rRGlyZWN0aW9uID0gJ1RhcmdldCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRMaW5rRGlyZWN0aW9uIGVxICdUYXJnZXQnICkgewogICAgICAgICAgICAgICAgICAgICRMaW5rRGlyZWN0aW9uID0gJ1NvdXJjZSc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBmaW5kIGFsbCBsaW5rZWQgY29uZmlnIGl0ZW1zIHdpdGggdGhpcyBsaW5rdHlwZSBhbmQgZGlyZWN0aW9uCiAgICAgICAgICAgICAgICBteSAlTGlua2VkQ29uZmlnSXRlbUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtLZXlMaXN0V2l0aERhdGEoCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0MSAgID0+ICdTZXJ2aWNlJywKICAgICAgICAgICAgICAgICAgICBLZXkxICAgICAgPT4gJFNlcnZpY2VEYXRhe1NlcnZpY2VJRH0sCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0MiAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb24gPT4gJExpbmtEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgcmVtZW1iZXIgdGhlIGxpbmtlZCBjb25maWcgaXRlbXMKICAgICAgICAgICAgICAgICVBbGxMaW5rZWRDb25maWdJdGVtSURzID0gKCAlQWxsTGlua2VkQ29uZmlnSXRlbUlEcywgJUxpbmtlZENvbmZpZ0l0ZW1JRHMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGludmVzdGlnYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIGVhY2ggY29uZmlnIGl0ZW0KICAgICAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAlQWxsTGlua2VkQ29uZmlnSXRlbUlEcyApIHsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgY29uZmlnIGl0ZW0gZGF0YQogICAgICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJEFsbExpbmtlZENvbmZpZ0l0ZW1JRHN7JENvbmZpZ0l0ZW1JRH07CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJENvbmZpZ0l0ZW1EYXRhLT57Q3VyRGVwbFN0YXRlVHlwZX0gbmUgJ3Byb2R1Y3RpdmUnOwogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJENvbmZpZ0l0ZW1EYXRhLT57Q3VySW5jaVN0YXRlVHlwZX0gZXEgJ29wZXJhdGlvbmFsJzsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHNlcnZpY2UgbXVzdCBiZSBzZXQgdG8gJ3dhcm5pbmcnCiAgICAgICAgICAgICAgICBpZiAoICRDb25maWdJdGVtRGF0YS0+e0N1ckluY2lTdGF0ZVR5cGV9IGVxICd3YXJuaW5nJyApIHsKICAgICAgICAgICAgICAgICAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlVHlwZX0gPSAnd2FybmluZyc7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiBzZXJ2aWNlIG11c3QgYmUgc2V0IHRvICdpbmNpZGVudCcKICAgICAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1EYXRhLT57Q3VySW5jaVN0YXRlVHlwZX0gZXEgJ2luY2lkZW50JyApIHsKICAgICAgICAgICAgICAgICAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlVHlwZX0gPSAnaW5jaWRlbnQnOwogICAgICAgICAgICAgICAgICAgIGxhc3QgQ09ORklHSVRFTUlEOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHVwZGF0ZSB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSB0eXBlIGZyb20gQ0lzIG9mIHRoZSBzZXJ2aWNlCiAgICAgICAgICAgICRTZWxmLT5TZXJ2aWNlUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJFNlcnZpY2VEYXRhe1NlcnZpY2VJRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJ0N1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzJywKICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlVHlwZX0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2V0IHRoZSBwcmVmZXJlbmNlcyBsb2NhbGx5CiAgICAgICAgICAgICRQcmVmZXJlbmNlc3tDdXJJbmNpU3RhdGVUeXBlRnJvbUNJc30gPSAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlVHlwZX07CiAgICAgICAgfQogICAgfQoKICAgICMgaW52ZXN0aWdhdGUgdGhlIHN0YXRlIG9mIGFsbCBjaGlsZCBzZXJ2aWNlcwogICAgaWYgKCAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlVHlwZX0gZXEgJ29wZXJhdGlvbmFsJyApIHsKCiAgICAgICAgIyBjcmVhdGUgdGhlIHZhbGlkIHN0cmluZwogICAgICAgIG15ICRWYWxpZElEU3RyaW5nID0gam9pbiBxeywgfSwgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkSURzR2V0KCk7CgogICAgICAgICMgcHJlcGFyZSBuYW1lCiAgICAgICAgbXkgJE5hbWUgPSAkU2VydmljZURhdGF7TmFtZX07CiAgICAgICAgJE5hbWUgPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICROYW1lLCAnTGlrZScgKTsKCiAgICAgICAgIyBnZXQgbGlzdCBvZiBhbGwgdmFsaWQgY2hpbGRzCiAgICAgICAgJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAiU0VMRUNUIGlkLCBuYW1lIEZST00gc2VydmljZSAiCiAgICAgICAgICAgICAgICAuICJXSEVSRSBuYW1lIExJS0UgJyIgLiAkTmFtZSAuICI6OiUnICIKICAgICAgICAgICAgICAgIC4gIkFORCB2YWxpZF9pZCBJTiAoIiAuICRWYWxpZElEU3RyaW5nIC4gIikiLAogICAgICAgICk7CgogICAgICAgICMgZmluZCBsZW5ndGggb2YgY2hpbGRzIHByZWZpeAogICAgICAgIG15ICRQcmVmaXhMZW5ndGggPSBsZW5ndGggIiRTZXJ2aWNlRGF0YXtOYW1lfTo6IjsKCiAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgbXkgQENoaWxkSURzOwogICAgICAgIFJPVzoKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IGNoaWxkIHBhcnQKICAgICAgICAgICAgbXkgJENoaWxkUGFydCA9IHN1YnN0ciAkUm93WzFdLCAkUHJlZml4TGVuZ3RoOwoKICAgICAgICAgICAgbmV4dCBST1cgaWYgJENoaWxkUGFydCA9fiBteyA6OiB9eG1zOwoKICAgICAgICAgICAgcHVzaCBAQ2hpbGRJRHMsICRSb3dbMF07CiAgICAgICAgfQoKICAgICAgICBTRVJWSUNFSUQ6CiAgICAgICAgZm9yIG15ICRTZXJ2aWNlSUQgKCBAQ2hpbGRJRHMgKSB7CgogICAgICAgICAgICAjIGdldCBkYXRhIG9mIGNoaWxkIHNlcnZpY2UKICAgICAgICAgICAgbXkgJUNoaWxkU2VydmljZURhdGEgPSAkU2VsZi0+U2VydmljZUdldCgKICAgICAgICAgICAgICAgIFNlcnZpY2VJRCAgICAgPT4gJFNlcnZpY2VJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBJbmNpZGVudFN0YXRlID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IFNFUlZJQ0VJRCBpZiAkQ2hpbGRTZXJ2aWNlRGF0YXtDdXJJbmNpU3RhdGVUeXBlfSBlcSAnb3BlcmF0aW9uYWwnOwoKICAgICAgICAgICAgJFNlcnZpY2VEYXRhe0N1ckluY2lTdGF0ZVR5cGV9ID0gJ3dhcm5pbmcnOwogICAgICAgICAgICBsYXN0IFNFUlZJQ0VJRDsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWZpbmUgZGVmYXVsdCBpbmNpZGVudCBzdGF0ZXMKICAgIG15ICVEZWZhdWx0SW5jaVN0YXRlcyA9ICgKICAgICAgICBvcGVyYXRpb25hbCA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIHdhcm5pbmcgICAgID0+ICdXYXJuaW5nJywKICAgICAgICBpbmNpZGVudCAgICA9PiAnSW5jaWRlbnQnLAogICAgKTsKCiAgICAjIGdldCB0aGUgaW5jaWRlbnQgc3RhdGUgbGlzdCBvZiB0aGlzIHR5cGUKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzICAgICAgICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIFByZWZlcmVuY2VzICAgPT4gewogICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+ICRTZXJ2aWNlRGF0YXtDdXJJbmNpU3RhdGVUeXBlfSwKICAgICAgICB9LAogICAgKTsKCiAgICBteSAlUmV2ZXJzZUluY2lTdGF0ZUxpc3QgPSByZXZlcnNlICV7ICRJbmNpU3RhdGVMaXN0IH07CiAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlSUR9CiAgICAgICAgPSAkUmV2ZXJzZUluY2lTdGF0ZUxpc3R7ICREZWZhdWx0SW5jaVN0YXRlc3sgJFNlcnZpY2VEYXRhe0N1ckluY2lTdGF0ZVR5cGV9IH0gfTsKCiAgICAjIGZhbGxiYWNrIGlmIHRoZSBkZWZhdWx0IGluY2lkZW50IHN0YXRlIGlzIGRlYWN0aXZhdGVkCiAgICBpZiAoICEkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlSUR9ICkgewogICAgICAgIG15IEBTb3J0ZWRJbmNpTGlzdCA9IHNvcnQga2V5cyAleyAkSW5jaVN0YXRlTGlzdCB9OwogICAgICAgICRTZXJ2aWNlRGF0YXtDdXJJbmNpU3RhdGVJRH0gPSAkU29ydGVkSW5jaUxpc3RbMF07CiAgICB9CgogICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgZnVuY3Rpb25hbGl0eQogICAgbXkgJEluY2lTdGF0ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtR2V0KAogICAgICAgIEl0ZW1JRCA9PiAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlSUR9LAogICAgKTsKCiAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlfSAgICAgPSAkSW5jaVN0YXRlLT57TmFtZX07CiAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlVHlwZX0gPSAkSW5jaVN0YXRlLT57RnVuY3Rpb25hbGl0eX1bMF0gLy8gJyc7CgogICAgJVNlcnZpY2VEYXRhID0gKCVTZXJ2aWNlRGF0YSwgJVByZWZlcmVuY2VzKTsKCiAgICByZXR1cm4gJVNlcnZpY2VEYXRhOwp9CgojIC0tLQoKCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCj1oZWFkMiBBdHRhY2htZW50QWRkKCkKCmFkZCBhcnRpY2xlIGF0dGFjaG1lbnRzLCByZXR1cm5zIHRoZSBhdHRhY2htZW50IGlkCiAgICBteSAkQXR0YWNobWVudElEID0gJFNlcnZpY2VPYmplY3QtPkF0dGFjaG1lbnRBZGQoCiAgICAgICAgU2VydmljZUlEICAgPT4gJDEyMywKICAgICAgICBGaWxlTmFtZSAgICA9PiAnRjxpbWFnZS5wbmc+JywKICAgICAgICBDb250ZW50U2l6ZSA9PiAnMTIzJywKICAgICAgICBDb250ZW50VHlwZSA9PiAnaW1hZ2UvcG5nOycsCiAgICAgICAgQ29udGVudCAgICAgPT4gJENvbnRlbnQsCiAgICAgICAgSW5saW5lICAgICAgPT4gMSwgICAoMHwxLCBkZWZhdWx0IDApCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICk7ClJldHVybnM6CiAgICAkQXR0YWNobWVudElEID0gMTIzIDsgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGNhbid0IGFkZCB0aGUgYXR0YWNobWVudAo9Y3V0CgpzdWIgQXR0YWNobWVudEFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFNlcnZpY2VJRCBGaWxlTmFtZSBDb250ZW50U2l6ZSBDb250ZW50VHlwZSBDb250ZW50IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGRlZmF1bHQKICAgIGlmICggISRQYXJhbXtJbmxpbmV9ICkgewogICAgICAgICRQYXJhbXtJbmxpbmV9ID0gMDsKICAgIH0KCiAgICAjIGdldCBhbGwgZXhpc3RpbmcgYXR0YWNobWVudHMKICAgIG15IEBJbmRleCA9ICRTZWxmLT5BdHRhY2htZW50SW5kZXgoCiAgICAgICAgU2VydmljZUlEID0+ICRQYXJhbXtTZXJ2aWNlSUR9LAogICAgICAgIFVzZXJJRCAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgdGhlIGZpbGVuYW1lCiAgICBteSAkTmV3RmlsZU5hbWUgPSAkUGFyYW17RmlsZU5hbWV9OwoKICAgICMgYnVpbGQgYSBsb29rdXAgaGFzaCBvZiBhbGwgZXhpc3RpbmcgZmlsZSBuYW1lcwogICAgbXkgJVVzZWRGaWxlOwogICAgZm9yIG15ICRGaWxlIChASW5kZXgpIHsKICAgICAgICBpZiAoICRGaWxlLT57RmlsZU5hbWV9ICkgewogICAgICAgICAgICAkVXNlZEZpbGV7ICRGaWxlLT57RmlsZU5hbWV9IH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIHRyeSB0byBtb2RpZnkgdGhlIHRoZSBmaWxlIG5hbWUgYnkgYWRkaW5nIGEgbnVtYmVyIGlmIGl0IGV4aXN0cyBhbHJlYWR5CiAgICBteSAkQ291bnQgPSAwOwogICAgd2hpbGUgKCAkQ291bnQgPCA1MCApIHsKCiAgICAgICAgIyBpbmNyZWFzZSBjb3VudGVyCiAgICAgICAgJENvdW50Kys7CgogICAgICAgICMgaWYgdGhlIGZpbGUgbmFtZSBleGlzdHMKICAgICAgICBpZiAoIGV4aXN0cyAkVXNlZEZpbGV7JE5ld0ZpbGVOYW1lfSApIHsKCiAgICAgICAgICAgICMgZmlsZW5hbWUgaGFzIGEgZmlsZSBuYW1lIGV4dGVuc2lvbgogICAgICAgICAgICBpZiAoICRQYXJhbXtGaWxlTmFtZX0gPX4gbXsgXEEgKC4qKSBcLiAoLis/KSBceiB9eG1zICkgewogICAgICAgICAgICAgICAgJE5ld0ZpbGVOYW1lID0gIiQxLSRDb3VudC4kMiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTmV3RmlsZU5hbWUgPSAiJFBhcmFte0ZpbGVOYW1lfS0kQ291bnQiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgc3RvcmUgdGhlIG5ldyBmaWxlbmFtZQogICAgJFBhcmFte0ZpbGVOYW1lfSA9ICROZXdGaWxlTmFtZTsKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGVuY29kZSBhdHRhY2htZW50IGlmIGl0J3MgYSBwb3N0Z3Jlc3FsIGJhY2tlbmQKICAgIGlmICggISREQk9iamVjdC0+R2V0RGF0YWJhc2VGdW5jdGlvbignRGlyZWN0QmxvYicpICkgewoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RW5jb2RlJyktPkVuY29kZU91dHB1dCggXCRQYXJhbXtDb250ZW50fSApOwoKICAgICAgICAkUGFyYW17Q29udGVudH0gPSBNSU1FOjpCYXNlNjQ6OmVuY29kZV9iYXNlNjQoICRQYXJhbXtDb250ZW50fSApOwogICAgfQoKICAgICMgd3JpdGUgYXR0YWNobWVudCB0byBkYgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gc2VydmljZV9hdHRhY2htZW50ICcgLgogICAgICAgICAgICAnIChzZXJ2aWNlX2lkLCBmaWxlbmFtZSwgY29udGVudF9zaXplLCBjb250ZW50X3R5cGUsIGNvbnRlbnQsIGlubGluZWF0dGFjaG1lbnQsICcgLgogICAgICAgICAgICAnIGNyZWF0ZWQsIGNyZWF0ZWRfYnksIGNoYW5nZWQsIGNoYW5nZWRfYnkpIFZBTFVFUyAnIC4KICAgICAgICAgICAgJyAoPywgPywgPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17U2VydmljZUlEfSwgXCRQYXJhbXtGaWxlTmFtZX0sIFwkUGFyYW17Q29udGVudFNpemV9LCBcJFBhcmFte0NvbnRlbnRUeXBlfSwKICAgICAgICAgICAgXCRQYXJhbXtDb250ZW50fSwgXCRQYXJhbXtJbmxpbmV9LCBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGdldCB0aGUgYXR0YWNobWVudCBpZAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgJwogICAgICAgICAgICAuICdGUk9NIHNlcnZpY2VfYXR0YWNobWVudCAnCiAgICAgICAgICAgIC4gJ1dIRVJFIHNlcnZpY2VfaWQgPSA/IEFORCBmaWxlbmFtZSA9ID8gJwogICAgICAgICAgICAuICdBTkQgY29udGVudF9zaXplID0gPyBBTkQgIGNvbnRlbnRfdHlwZSA9ID8gJwogICAgICAgICAgICAuICdBTkQgaW5saW5lYXR0YWNobWVudCA9ID8gJwogICAgICAgICAgICAuICdBTkQgY3JlYXRlZF9ieSA9ID8gQU5EIGNoYW5nZWRfYnkgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtTZXJ2aWNlSUR9LCBcJFBhcmFte0ZpbGVOYW1lfSwgXCRQYXJhbXtDb250ZW50U2l6ZX0sIFwkUGFyYW17Q29udGVudFR5cGV9LAogICAgICAgICAgICBcJFBhcmFte0lubGluZX0sIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtVc2VySUR9LAogICAgICAgIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJEF0dGFjaG1lbnRJRDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRBdHRhY2htZW50SUQgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAkQXR0YWNobWVudElEOwp9Cgo9aGVhZDIgU2VydmljZUlubGluZUF0dGFjaG1lbnRVUkxVcGRhdGUoKQpVcGRhdGVzIHRoZSBVUkxzIG9mIHVwbG9hZGVkIGlubGluZSBhdHRhY2htZW50cy4KICAgIG15ICRTdWNjZXNzID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VJbmxpbmVBdHRhY2htZW50VVJMVXBkYXRlKAogICAgICAgIFNlcnZpY2VJRCAgPT4gMTIsCiAgICAgICAgRm9ybUlEICAgICA9PiA0NTYsCiAgICAgICAgRmlsZUlEICAgICA9PiA1LAogICAgICAgIEF0dGFjaG1lbnQgPT4gXCVBdHRhY2htZW50LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7ClJldHVybnM6CiAgICAkU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAgIyBvZiB1bmRlZiBpZiBhdHRhY2htZW50IFVSTCBjb3VsZCBub3QgYmUgdXBkYXRlZAo9Y3V0CgpzdWIgU2VydmljZUlubGluZUF0dGFjaG1lbnRVUkxVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTZXJ2aWNlSUQgQXR0YWNobWVudCBGb3JtSUQgRmlsZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgYXR0YWNobWVudCBpcyBhIGhhc2ggcmVmZXJlbmNlCiAgICBpZiAoIHJlZiAkUGFyYW17QXR0YWNobWVudH0gbmUgJ0hBU0gnICYmICEleyAkUGFyYW17QXR0YWNobWVudH0gfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkF0dGFjaG1lbnQgbXVzdCBiZSBhIGhhc2ggcmVmZXJlbmNlISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgb25seSBjb25zaWRlciBpbmxpbmUgYXR0YWNobWVudHMgaGVyZSAodGhleSBoYXZlIGEgY29udGVudCBpZCkKICAgIHJldHVybiAxIGlmICEkUGFyYW17QXR0YWNobWVudH0tPntDb250ZW50SUR9OwoKICAgIG15ICVTZXJ2aWNlRGF0YSA9ICRTZWxmLT5TZXJ2aWNlR2V0KAogICAgICAgIFNlcnZpY2VJRCAgPT4gJFBhcmFte1NlcnZpY2VJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBwaWN0dXJlIFVSTCBpbiB1cGxvYWQgY2FjaGUKICAgIG15ICRTZWFyY2ggPSAiQWN0aW9uPVBpY3R1cmVVcGxvYWQgLiBGb3JtSUQ9XFEkUGFyYW17Rm9ybUlEfVxFIC4gIgogICAgICAgIC4gIkNvbnRlbnRJRD1cUSRQYXJhbXtBdHRhY2htZW50fS0+e0NvbnRlbnRJRH1cRSI7CgogICAgIyBwaWN0dXJlIFVSTCBpbiBTZXJ2aWNlIGF0dGFjaG1lbnQKICAgIG15ICRSZXBsYWNlID0gIkFjdGlvbj1BZ2VudElUU01TZXJ2aWNlWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50OyIKICAgICAgICAuICJTZXJ2aWNlSUQ9JFBhcmFte1NlcnZpY2VJRH07RmlsZUlEPSRQYXJhbXtGaWxlSUR9IjsKCiAgICAjIHJld3JpdGUgcGljdHVyZSBVUkxzCiAgICBmb3JlYWNoIG15ICRMYW5ndWFnZUlEICgga2V5cyAleyRTZXJ2aWNlRGF0YXtEZXNjcmlwdGlvbnN9fSApIHsKICAgICAgICBpZiAoICRTZXJ2aWNlRGF0YXtEZXNjcmlwdGlvbnN9LT57JExhbmd1YWdlSUR9LT57RGVzY3JpcHRpb25Mb25nfSApIHsKICAgICAgICAgICAgIyByZXBsYWNlIFVSTAogICAgICAgICAgICAkU2VydmljZURhdGF7RGVzY3JpcHRpb25zfS0+eyRMYW5ndWFnZUlEfS0+e0Rlc2NyaXB0aW9uTG9uZ30gPX4gc3skU2VhcmNofXskUmVwbGFjZX14bXM7CiAgICAgICAgfQogICAgfQoKICAgICMgQ3V0IG9mZiBzdWIgc2VydmljZXMgZnJvbSBzZXJ2aWNlIG5hbWUKICAgICRTZXJ2aWNlRGF0YXtOYW1lfSA9IChzcGxpdCAvOjovLCAkU2VydmljZURhdGF7TmFtZX0pWy0xXTsKCiAgICAjIHVwZGF0ZSBzZXJ2aWNlCiAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5TZXJ2aWNlVXBkYXRlKAogICAgICAgICVTZXJ2aWNlRGF0YSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgY2hlY2sgaWYgdXBkYXRlIHdhcyBzdWNjZXNzZnVsCiAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgU2VydmljZUlEJyRQYXJhbXtTZXJ2aWNlSUR9JyEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIEF0dGFjaG1lbnRHZXQoKQoKZ2V0IGF0dGFjaG1lbnQgb2Ygc2VydmljZSBJRAogICAgbXkgJUZpbGUgPSAkU2VydmljZU9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICBTZXJ2aWNlSUQgPT4gMTIzLAogICAgICAgIEZpbGVJRCAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKUmV0dXJuczoKICAgICVGaWxlID0gKAogICAgICAgIEZpbGVzaXplICAgID0+ICc1NDAyODYnLCAgICAgICAgICAgICAgICAjIGZpbGUgc2l6ZSBpbiBieXRlcwogICAgICAgIENvbnRlbnRUeXBlID0+ICdpbWFnZS9qcGVnJywKICAgICAgICBGaWxlbmFtZSAgICA9PiAnRjxFcnJvci5qcGc+JywKICAgICAgICBDb250ZW50ICAgICA9PiAnLi4uJyAgICAgICAgICAgICAgICAgICAgIyBmaWxlIGJpbmFyeSBjb250ZW50CiAgICApOwo9Y3V0CgpzdWIgQXR0YWNobWVudEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFNlcnZpY2VJRCBGaWxlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBmaWxlbmFtZSwgY29udGVudF90eXBlLCBjb250ZW50X3NpemUsIGNvbnRlbnQgJwogICAgICAgICAgICAuICdGUk9NIHNlcnZpY2VfYXR0YWNobWVudCAnCiAgICAgICAgICAgIC4gJ1dIRVJFIGlkID0gPyBBTkQgc2VydmljZV9pZCA9ID8gJwogICAgICAgICAgICAuICdPUkRFUiBCWSBjcmVhdGVkJywKICAgICAgICBCaW5kICAgPT4gWyBcJFBhcmFte0ZpbGVJRH0sIFwkUGFyYW17U2VydmljZUlEfSBdLAogICAgICAgIEVuY29kZSA9PiBbIDEsIDEsIDEsIDAgXSwKICAgICAgICBMaW1pdCAgPT4gMSwKICAgICk7CgogICAgbXkgJUZpbGU7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKCiAgICAgICAgIyBkZWNvZGUgYXR0YWNobWVudCBpZiBpdCdzIGEgcG9zdGdyZXNxbCBiYWNrZW5kIGFuZCBub3QgQkxPQgogICAgICAgIGlmICggISREQk9iamVjdC0+R2V0RGF0YWJhc2VGdW5jdGlvbignRGlyZWN0QmxvYicpICkgewogICAgICAgICAgICAkUm93WzNdID0gTUlNRTo6QmFzZTY0OjpkZWNvZGVfYmFzZTY0KCAkUm93WzNdICk7CiAgICAgICAgfQoKICAgICAgICAkRmlsZXtGaWxlbmFtZX0gICAgPSAkUm93WzBdOwogICAgICAgICRGaWxle0NvbnRlbnRUeXBlfSA9ICRSb3dbMV07CiAgICAgICAgJEZpbGV7RmlsZXNpemV9ICAgID0gJFJvd1syXTsKICAgICAgICAkRmlsZXtDb250ZW50fSAgICAgPSAkUm93WzNdOwogICAgfQoKICAgIHJldHVybiAlRmlsZTsKfQoKPWhlYWQyIEF0dGFjaG1lbnRJbmRleCgpCnJldHVybiBhbiBhdHRhY2htZW50IGluZGV4IG9mIGFuIHNlcnZpY2UgaWQKICAgIG15IEBJbmRleCA9ICRTZXJ2aWNlT2JqZWN0LT5BdHRhY2htZW50SW5kZXgoCiAgICAgICAgU2VydmljZUlEICA9PiAxMjMsCiAgICAgICAgU2hvd0lubGluZSA9PiAwLCAgICggMHwxLCBkZWZhdWx0IDEpCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKUmV0dXJuczoKICAgIEBJbmRleCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEZpbGVzaXplICAgID0+ICc1MjcuNiBLQnl0ZXMnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnaW1hZ2UvanBlZycsCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdGPEVycm9yLmpwZz4nLAogICAgICAgICAgICBGaWxlc2l6ZVJhdyA9PiA1NDAyODYsCiAgICAgICAgICAgIEZpbGVJRCAgICAgID0+IDYsCiAgICAgICAgICAgIElubGluZSAgICAgID0+IDAsCiAgICAgICAgfSwKICAgICAgICB7LAogICAgICAgICAgICBGaWxlc2l6ZSA9PiAnNDMwLjAgS0J5dGVzJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2ltYWdlL2pwZWcnLAogICAgICAgICAgICBGaWxlbmFtZSA9PiAnRjxTb2x1dGlvbi5qcGc+JywKICAgICAgICAgICAgRmlsZXNpemVSYXcgPT4gNDQwMjg2LAogICAgICAgICAgICBGaWxlSUQgPT4gNSwKICAgICAgICAgICAgSW5saW5lID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEZpbGVzaXplID0+ICcyOTYgQnl0ZXMnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgIEZpbGVuYW1lID0+ICdGPEFkZGl0aW9uYWxDb21tZW50cy50eHQ+JywKICAgICAgICAgICAgRmlsZXNpemVSYXcgPT4gMjk2LAogICAgICAgICAgICBGaWxlSUQgPT4gNywKICAgICAgICAgICAgSW5saW5lID0+IDAsCiAgICAgICAgfSwKICAgICk7Cj1jdXQKCnN1YiBBdHRhY2htZW50SW5kZXggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTZXJ2aWNlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgZmlsZW5hbWUsIGNvbnRlbnRfdHlwZSwgY29udGVudF9zaXplLCBpbmxpbmVhdHRhY2htZW50ICcKICAgICAgICAgICAgLiAnRlJPTSBzZXJ2aWNlX2F0dGFjaG1lbnQgJwogICAgICAgICAgICAuICdXSEVSRSBzZXJ2aWNlX2lkID0gPyAnCiAgICAgICAgICAgIC4gJ09SREVSIEJZIGZpbGVuYW1lJywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17U2VydmljZUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEwMCwKICAgICk7CgogICAgbXkgQEluZGV4OwogICAgQVRUQUNITUVOVDoKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICBteSAkSUQgICAgICAgICAgPSAkUm93WzBdOwogICAgICAgIG15ICRGaWxlbmFtZSAgICA9ICRSb3dbMV07CiAgICAgICAgbXkgJENvbnRlbnRUeXBlID0gJFJvd1syXTsKICAgICAgICBteSAkRmlsZXNpemUgICAgPSAkUm93WzNdOwogICAgICAgIG15ICRJbmxpbmUgICAgICA9ICRSb3dbNF07CgogICAgICAgICMgZG8gbm90IHNob3cgaW5saW5lIGF0dGFjaG1lbnRzCiAgICAgICAgaWYgKCBkZWZpbmVkICRQYXJhbXtTaG93SW5saW5lfSAmJiAhJFBhcmFte1Nob3dJbmxpbmV9ICYmICRJbmxpbmUgKSB7CiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVDsKICAgICAgICB9CgogICAgICAgICMgY29udmVydCB0byBodW1hbiByZWFkYWJsZSBmaWxlIHNpemUKICAgICAgICBteSAkRmlsZVNpemVSYXcgPSAkRmlsZXNpemU7CiAgICAgICAgaWYgKCRGaWxlc2l6ZSkgewogICAgICAgICAgICBpZiAoICRGaWxlc2l6ZSA+ICggMTAyNCAqIDEwMjQgKSApIHsKICAgICAgICAgICAgICAgICRGaWxlc2l6ZSA9IHNwcmludGYgIiUuMWYgTUJ5dGVzIiwgKCAkRmlsZXNpemUgLyAoIDEwMjQgKiAxMDI0ICkgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRGaWxlc2l6ZSA+IDEwMjQgKSB7CiAgICAgICAgICAgICAgICAkRmlsZXNpemUgPSBzcHJpbnRmICIlLjFmIEtCeXRlcyIsICggKCAkRmlsZXNpemUgLyAxMDI0ICkgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRGaWxlc2l6ZSA9ICRGaWxlc2l6ZSAuICcgQnl0ZXMnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBJbmRleCwgewogICAgICAgICAgICBGaWxlSUQgICAgICA9PiAkSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJENvbnRlbnRUeXBlLAogICAgICAgICAgICBGaWxlc2l6ZSAgICA9PiAkRmlsZXNpemUsCiAgICAgICAgICAgIEZpbGVzaXplUmF3ID0+ICRGaWxlU2l6ZVJhdywKICAgICAgICAgICAgSW5saW5lICAgICAgPT4gJElubGluZSwKICAgICAgICB9OwogICAgfQoKICAgIHJldHVybiBASW5kZXg7Cn0KCj1oZWFkMiBBdHRhY2htZW50RGVsZXRlKCkKZGVsZXRlIGF0dGFjaG1lbnQgb2YgYXJ0aWNsZQogICAgbXkgJFN1Y2Nlc3MgPSAkU2VydmljZU9iamVjdC0+QXR0YWNobWVudERlbGV0ZSgKICAgICAgICBTZXJ2aWNlSUQgPT4gMTIzLAogICAgICAgIEZpbGVJRCAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKUmV0dXJuczoKICAgICRTdWNjZXNzID0gMSA7ICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGF0dGFjaG1lbnQgY291bGQgbm90IGJlIGRlbGV0ZWQKPWN1dAoKc3ViIEF0dGFjaG1lbnREZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTZXJ2aWNlSUQgRmlsZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gc2VydmljZV9hdHRhY2htZW50IFdIRVJFIGlkID0gPyBBTkQgc2VydmljZV9pZCA9ID8gJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtGaWxlSUR9LCBcJFBhcmFte1NlcnZpY2VJRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1mb3Igc3RvcHdvcmRzIGFjbAoKPWhlYWQyIFVwZGF0ZVR5cFNlcnZpY2VBQ0woKQpkZWxldGUgYXR0YWNobWVudCBvZiBhcnRpY2xlCiAgICBteSAkU3VjY2VzcyA9ICRTZXJ2aWNlT2JqZWN0LT5VcGRhdGVUeXBTZXJ2aWNlQUNMKAogICAgICAgIFNlcnZpY2VJRCA9PiAxMjMsCiAgICAgICAgVGlja2V0VHlwZUlEICAgID0+IDEsICMgT3B0aW9uYWwKICAgICAgICBTZXJ2aWNlVmFsaWQgPT4gMCwxLDIsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwpSZXR1cm5zOgogICAgJFN1Y2Nlc3MgPSAxIDsgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgYWNsIGNvdWxkIG5vdCBiZSBhZGRlZC9jaGFuZ2VkL2RlbGV0ZWQKPWN1dAoKc3ViIFVwZGF0ZVR5cFNlcnZpY2VBQ0wgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTZXJ2aWNlSUQgU2VydmljZVZhbGlkIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFN1Y2Nlc3M7CiAgICBteSAkQUNMTmFtZTsKCiAgICBteSAkQUNMT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkFDTDo6REI6OkFDTCcpOwoKICAgIG15ICRDb25maWdPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRBQ0xPcHRpb25zID0gJENvbmZpZ09iamVjdC0+R2V0KCdTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNsczo6T3B0aW9ucycpOwogICAgbXkgJEdlbmVyYXRlSW5pdGFsQUNMVG9EaXNhYmxlQWxsU2VydmljZXMgPSAkUGFyYW17R2VuZXJhdGVJbml0YWxBQ0xUb0Rpc2FibGVBbGxTZXJ2aWNlc30gfHwgJEFDTE9wdGlvbnMtPntHZW5lcmF0ZUluaXRhbEFDTFRvRGlzYWJsZUFsbFNlcnZpY2VzfTsKICAgIG15ICRQb3NzaWJsZSA9ICRQYXJhbXtDb25maWdDaGFuZ2V9IHx8ICRBQ0xPcHRpb25zLT57Q29uZmlnQ2hhbmdlfTsKICAgIG15ICRBQ0xEZXBsb3kgPSAkUGFyYW17QUNMRGVwbG95fSB8fCAkQUNMT3B0aW9ucy0+e0FDTERlcGxveX07CiAgICBteSAkQUNMVmFsaWRJRCA9ICRQYXJhbXtBQ0xWYWxpZElEfSB8fCAkQUNMT3B0aW9ucy0+e0FDTFZhbGlkSUR9OwogICAgbXkgJEZyb250ZW5kQWN0aW9uID0gJFBhcmFte0Zyb250ZW5kQWN0aW9ufSB8fCAkQUNMT3B0aW9ucy0+e0Zyb250ZW5kQWN0aW9ufTsKCiAgICBteSAkVHlwZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJyk7CiAgICBteSAkVGlja2V0VHlwZSA9ICRUeXBlT2JqZWN0LT5UeXBlTG9va3VwKCBUeXBlSUQgPT4gJFBhcmFte1RpY2tldFR5cGVJRH0gKTsKCiAgICBteSAkU2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyk7CiAgICBteSAkU2VydmljZU5hbWUgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUxvb2t1cCggU2VydmljZUlEID0+ICRQYXJhbXtTZXJ2aWNlSUR9ICk7CgogICAgaWYgKCAhJFRpY2tldFR5cGUgKSB7CiAgICAjIFJlbW92ZSBTZXJ2aWNlIGZyb20gYWxsIEFDTHMuCgogICAgICAgIG15ICVUeXBlTGlzdCA9ICRUeXBlT2JqZWN0LT5UeXBlTGlzdCgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBUWVBFOgogICAgICAgIGZvciBteSAkVGlja2V0VHlwZSAoIHZhbHVlcyAlVHlwZUxpc3QgKSB7CgogICAgICAgICAgICBteSAkQUNMUmVtb3ZlTmFtZSA9ICd6enogLSBTaG93IFNlcnZpY2UgYmFzZWQgb24gVGlja2V0LVR5cGU6ICcgLiAkVGlja2V0VHlwZTsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgZGlzYWJsZSBBQ0wgZXhpc3RzCiAgICAgICAgICAgIG15ICRBQ0wgPSAkQUNMT2JqZWN0LT5BQ0xHZXQoCiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJEFDTFJlbW92ZU5hbWUsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmIChJc0hhc2hSZWZXaXRoRGF0YSgkQUNMKSApIHsKICAgICAgICAgICAgICAgIG15ICRDb25maWdDaGFuZ2VIYXNoUmVmT2xkID0gJEFDTC0+e0NvbmZpZ0NoYW5nZX07CiAgICAgICAgICAgICAgICBteSAkT2xkU2VydmljZXMgICAgICAgICAgICA9ICRDb25maWdDaGFuZ2VIYXNoUmVmT2xkLT57JFBvc3NpYmxlfSAmJiAkQ29uZmlnQ2hhbmdlSGFzaFJlZk9sZC0+eyRQb3NzaWJsZX17VGlja2V0fQogICAgICAgICAgICAgICAgICAgID8gJENvbmZpZ0NoYW5nZUhhc2hSZWZPbGQtPnskUG9zc2libGV9e1RpY2tldH17U2VydmljZX0gOiB1bmRlZjsKICAgICAgICAgICAgICAgIG15IEBDb25maWdTZXJ2aWNlcyAgICAgICAgID0gJE9sZFNlcnZpY2VzID8gJE9sZFNlcnZpY2VzLT5AKiA6ICgpOwoKICAgICAgICAgICAgICAgIEBDb25maWdTZXJ2aWNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gZ3JlcCB7ICRfICF+IC8kU2VydmljZU5hbWUvIH0gQENvbmZpZ1NlcnZpY2VzOwogICAgICAgICAgICAgICAgJENvbmZpZ0NoYW5nZUhhc2hSZWZPbGQtPnskUG9zc2libGV9e1RpY2tldH17U2VydmljZX0gPSBbQENvbmZpZ1NlcnZpY2VzXTsKICAgICAgICAgICAgICAgICRBQ0wtPntDb25maWdDaGFuZ2V9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJENvbmZpZ0NoYW5nZUhhc2hSZWZPbGQ7CgogICAgICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkQUNMT2JqZWN0LT5BQ0xVcGRhdGUoCiAgICAgICAgICAgICAgICAgICAgJEFDTC0+JSosCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIEdlbmVyYXRlIGEgaW5pdGlhbCBBQ0wsIHdoaWNoIGRpc2FibGUgYWxsIHNlcnZpY2VzCiAgICBpZiAoICRHZW5lcmF0ZUluaXRhbEFDTFRvRGlzYWJsZUFsbFNlcnZpY2VzIGVxICcxJyApIHsKCiAgICAgICAgbXkgJEFDTERpc2FibGVOYW1lID0gJ3p6YSAtIERpc2FibGUgYWxsIFNlcnZpY2VzIGlmIG5vIFRpY2tldC1UeXBlIGlzIHNlbGVjdGVkLic7CgogICAgICAgICMgQ2hlY2sgaWYgZGlzYWJsZSBBQ0wgZXhpc3RzCiAgICAgICAgbXkgJEFDTCA9ICRBQ0xPYmplY3QtPkFDTEdldCgKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkQUNMRGlzYWJsZU5hbWUsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgQUNMIGlmIGl0IG5vdCBleGlzdHMKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkQUNMKSApIHsKCiAgICAgICAgICAgIG15ICREaXNhYmxlQ29uZmlnTWF0Y2hIYXNoUmVmOwogICAgICAgICAgICAkRGlzYWJsZUNvbmZpZ01hdGNoSGFzaFJlZi0+e1Byb3BlcnRpZXN9LT57RnJvbnRlbmR9LT57QWN0aW9ufSA9ICRGcm9udGVuZEFjdGlvbjsKICAgICAgICAgICAgIyAkRGlzYWJsZUNvbmZpZ01hdGNoSGFzaFJlZi0+e1Byb3BlcnRpZXN9LT57VGlja2V0fS0+e1R5cGV9ID0gW107CgogICAgICAgICAgICBteSAkRGlzYWJsZUNvbmZpZ0NoYW5nZUhhc2hSZWY7CiAgICAgICAgICAgICREaXNhYmxlQ29uZmlnQ2hhbmdlSGFzaFJlZi0+e1Bvc3NpYmxlTm90fXtUaWNrZXR9e1NlcnZpY2V9ID0gWydbUmVnRXhwXS4qJ107CgogICAgICAgICAgICAgICAgbXkgJU5ld0FDTCA9ICgKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkQUNMRGlzYWJsZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgQ29tbWVudCAgICAgICAgPT4gJ1RoaXMgQUNMIHdhcyBnZW5lcmF0ZWQgd2hlbiBhIHNlcnZpY2Ugd2FzIGFkZGVkIG9yIGNoYW5nZWQuJywKICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgICA9PiAnVGhpcyBBQ0wgaXMgdXNlZCB0byByZXN0cmljdCBTZXJ2aWNlcyBwZXIgVGlja2V0LVR5cGUnLAogICAgICAgICAgICAgICAgICAgIFN0b3BBZnRlck1hdGNoID0+IDAsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnTWF0Y2ggICAgPT4gJERpc2FibGVDb25maWdNYXRjaEhhc2hSZWYsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnQ2hhbmdlICAgPT4gJERpc2FibGVDb25maWdDaGFuZ2VIYXNoUmVmLAogICAgICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgICAgID0+ICRBQ0xWYWxpZElELAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkU3VjY2VzcyA9ICRBQ0xPYmplY3QtPkFDTEFkZCgKICAgICAgICAgICAgICAgICAgICAlTmV3QUNMLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgJEFDTE5hbWUgPSAnenp6IC0gU2hvdyBTZXJ2aWNlIGJhc2VkIG9uIFRpY2tldC1UeXBlOiAnIC4gJFRpY2tldFR5cGU7CgogICAgbXkgJEFDTCA9ICRBQ0xPYmplY3QtPkFDTEdldCgKICAgICAgICBOYW1lICAgPT4gJEFDTE5hbWUsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIGlmICggJFBhcmFte1NlcnZpY2VWYWxpZH0gIT0gMSApIHsKICAgICAgICBpZiAoICRBQ0wgKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJEFDTE9iamVjdC0+QUNMRGVsZXRlKAogICAgICAgICAgICAgICAgSUQgICAgID0+ICRBQ0wtPntJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGVsc2UgewogICAgICAgIG15ICRBY3Rpb247CiAgICAgICAgbXkgJENvbmZpZ0NoYW5nZUhhc2hSZWZPbGQgPSAkQUNMLT57Q29uZmlnQ2hhbmdlfTsKCiAgICAgICAgbXkgJE9sZFNlcnZpY2VzID0gJENvbmZpZ0NoYW5nZUhhc2hSZWZPbGQtPnskUG9zc2libGV9ICYmICRDb25maWdDaGFuZ2VIYXNoUmVmT2xkLT57JFBvc3NpYmxlfXtUaWNrZXR9ID8gJENvbmZpZ0NoYW5nZUhhc2hSZWZPbGQtPnskUG9zc2libGV9e1RpY2tldH17U2VydmljZX0gOiB1bmRlZjsKICAgICAgICBteSBAQ29uZmlnU2VydmljZXMgPSAkT2xkU2VydmljZXMgPyAkT2xkU2VydmljZXMtPkAqIDogKCk7CgogICAgICAgIG15ICRDb25maWdNYXRjaEhhc2hSZWYgID0ge307CiAgICAgICAgJENvbmZpZ01hdGNoSGFzaFJlZi0+e1Byb3BlcnRpZXN9LT57VGlja2V0fS0+e1R5cGV9ID0gWyIkVGlja2V0VHlwZSJdOwogICAgICAgICRDb25maWdNYXRjaEhhc2hSZWYtPntQcm9wZXJ0aWVzfS0+e0Zyb250ZW5kfS0+e0FjdGlvbn0gPSAkRnJvbnRlbmRBY3Rpb247CgogICAgICAgIG15ICRDb25maWdDaGFuZ2VIYXNoUmVmID0ge307CgogICAgICAgIGlmICghIGdyZXAgeyAkXyA9fiAvJFNlcnZpY2VOYW1lLyB9IEBDb25maWdTZXJ2aWNlcyApIHsKICAgICAgICAgICAgcHVzaCAoQENvbmZpZ1NlcnZpY2VzLCAkU2VydmljZU5hbWUpOwogICAgICAgICAgICAkQ29uZmlnQ2hhbmdlSGFzaFJlZi0+eyRQb3NzaWJsZX17VGlja2V0fXtTZXJ2aWNlfSA9IFtAQ29uZmlnU2VydmljZXNdOwoKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoXEBDb25maWdTZXJ2aWNlcykgKSB7CiAgICAgICAgICAgICAgICAkQWN0aW9uID0gJ1VwZGF0ZSc7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkQWN0aW9uID0gJ0RlbGV0ZSc7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkQ29uZmlnQ2hhbmdlSGFzaFJlZiA9ICRDb25maWdDaGFuZ2VIYXNoUmVmT2xkOwogICAgfQoKICAgICAgICBteSAlTmV3QUNMID0gKAogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkQUNMTmFtZSwKICAgICAgICAgICAgQ29tbWVudCAgICAgICAgPT4gJ1RoaXMgQUNMIHdhcyBnZW5lcmF0ZWQgd2hlbiBhIHNlcnZpY2Ugd2FzIGFkZGVkIG9yIGNoYW5nZWQuJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJ1RoaXMgQUNMIGlzIHVzZWQgdG8gcmVzdHJpY3QgU2VydmljZXMgcGVyIFRpY2tldC1UeXBlJywKICAgICAgICAgICAgU3RvcEFmdGVyTWF0Y2ggPT4gMCwKICAgICAgICAgICAgQ29uZmlnTWF0Y2ggICAgPT4gJENvbmZpZ01hdGNoSGFzaFJlZiwKICAgICAgICAgICAgQ29uZmlnQ2hhbmdlICAgPT4gJENvbmZpZ0NoYW5nZUhhc2hSZWYsCiAgICAgICAgICAgIFZhbGlkSUQgICAgICAgID0+ICRBQ0xWYWxpZElELAogICAgICAgICk7CgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJEFDTCkgKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJEFDTE9iamVjdC0+QUNMVXBkYXRlKAogICAgICAgICAgICAgICAgJEFDTC0+JSosCiAgICAgICAgICAgICAgICAlTmV3QUNMLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkQUNMT2JqZWN0LT5BQ0xBZGQoCiAgICAgICAgICAgICAgICAlTmV3QUNMLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ291bGQgbm90ICcgLiAoICRQYXJhbXtEZWxldGV9ID8gJ2RlbGV0ZScgOiAndXBkYXRlJyApIC4gIiBBQ0wgJEFDTE5hbWUhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBEb24ndCBkZXBsb3kgbmV3IEFDTCwgY2F1c2UgU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHM6Ok9wdGlvbnMgLT4gRGVwbG95IGlzIGRpc2FibGVkCiAgICBpZiAoICRBQ0xEZXBsb3kgbmUgJzEnICkgewoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGRlcGxveSBuZXcgQUNMcyAtIHRha2VuIGZyb20gS2VybmVsL01vZHVsZXMvQWRtaW5BQ0wKICAgIG15ICRMb2NhdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpIC4gJy9LZXJuZWwvQ29uZmlnL0ZpbGVzL1paWkFDTC5wbSc7CgogICAgJFN1Y2Nlc3MgPSAkQUNMT2JqZWN0LT5BQ0xEdW1wKAogICAgICAgIFJlc3VsdFR5cGUgPT4gJ0ZJTEUnLAogICAgICAgIExvY2F0aW9uICAgPT4gJExvY2F0aW9uLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgaWYgKCAkU3VjY2VzcyApIHsKCiAgICAgICAgJFN1Y2Nlc3MgPSAkQUNMT2JqZWN0LT5BQ0xzTmVlZFN5bmNSZXNldCgpOwoKICAgICAgICAjIHJlbW92ZSBwcmVzZWxlY3Rpb24gY2FjaGUgVE9ETzogcmVidWlsZCB0aGUgY2FjaGUgcHJvcGVybHkgKGEgc2ltcGxlICRGaWVsZFJlc3RyaWN0aW9uc09iamVjdC0+U2V0QUNMUHJlc2VsZWN0aW9uQ2FjaGUoKTsgdXNlcyB0aGUgb2xkIEFDTHMpCiAgICAgICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CiAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgIFR5cGUgPT4gJ1RpY2tldEFDTCcsICAgICAgIyBvbmx5IFthLXpBLVowLTlfXSBjaGFycyB1c2FibGUKICAgICAgICAgICAgS2V5ICA9PiAnUHJlc2VsZWN0aW9uJywKICAgICAgICApOwogICAgfQoKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ291bGQgbm90IGRlcGxveSBBQ0xzIC0gbWFudWFsIGZpeCBuZWVkZWQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KIyBFTyBTZXJ2aWNlQ2F0YWxvZwoKMTsK</File>
        <File Location="Kernel/Autoload/ServiceImportExport.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCgp1c2UgS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UgKCk7ICAgICMjIG5vIHBlcmxpbXBvcnRzCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlOyAgICMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUZpbGVuYW1lTWF0Y2hlc1BhY2thZ2UpCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB2NS4yNDsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNBcnJheVJlZldpdGhEYXRhIElzSGFzaFJlZldpdGhEYXRhKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnLAopOwoKc3ViIEV4cG9ydFNlcnZpY2VzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFVzZXJJRCA9ICRTZWxmLT57VXNlcklEfSB8fCAkUGFyYW17VXNlcklEfTsKCiAgICBteSAlU2VydmljZUZpbHRlcjsKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17U2VydmljZXN9ICkgKSB7CiAgICAgICAgJVNlcnZpY2VGaWx0ZXIgPSBtYXAgeyAkXyA9PiAxIH0gJFBhcmFte1NlcnZpY2VzfS0+QCo7CiAgICB9CgogICAgbXkgJFNlcnZpY2VPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpOwoKICAgIG15ICVTZXJ2aWNlTGlzdCA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMCwKICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICk7CgogICAgbXkgJUV4cG9ydERhdGE7CiAgICBTRVJWSUNFSUQ6CiAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIHNvcnQga2V5cyAlU2VydmljZUxpc3QgKSB7CgogICAgICAgIG15ICVTZXJ2aWNlRGF0YSA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlR2V0KAogICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJFNlcnZpY2VJRCwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRVc2VySUQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCVTZXJ2aWNlRmlsdGVyKSB7CiAgICAgICAgICAgIG5leHQgU0VSVklDRUlEIHVubGVzcyAkU2VydmljZUZpbHRlcnsgJFNlcnZpY2VEYXRhe05hbWV9IH07CiAgICAgICAgfQoKICAgICAgICAjIHRyYW5zbGF0ZSBJRHMgaW50byBuYW1lcyBvciBuYW1lLWxpa2UgaWRlbnRpZmllcnMKICAgICAgICBteSAkUXVldWVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKTsKICAgICAgICBteSAkVHlwZU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpOwogICAgICAgIG15ICRWYWxpZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwoKICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBrZXlzICVTZXJ2aWNlRGF0YSApIHsKCiAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIHVubGVzcyAkQXR0cmlidXRlID1+IC9JRC87CgogICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGUgZXEgJ1BhcmVudElEJyApIHsKICAgICAgICAgICAgICAgIG15ICRQYXJlbnRTZXJ2aWNlID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNlRGF0YXtQYXJlbnRJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFNlcnZpY2VEYXRhe1BhcmVudH0gPSAkUGFyZW50U2VydmljZTsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkU2VydmljZURhdGF7UGFyZW50SUR9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnVmFsaWRJRCcgKSB7CiAgICAgICAgICAgICAgICBteSAkVmFsaWQgPSAkVmFsaWRPYmplY3QtPlZhbGlkTG9va3VwKAogICAgICAgICAgICAgICAgICAgIFZhbGlkSUQgPT4gJFNlcnZpY2VEYXRhe1ZhbGlkSUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZXJ2aWNlRGF0YXtWYWxpZH0gPSAkVmFsaWQ7CiAgICAgICAgICAgICAgICBkZWxldGUgJFNlcnZpY2VEYXRhe1ZhbGlkSUR9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnRGVzdFF1ZXVlSUQnICkgewogICAgICAgICAgICAgICAgbXkgJFF1ZXVlID0gJFF1ZXVlT2JqZWN0LT5RdWV1ZUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICBRdWV1ZUlEID0+ICRTZXJ2aWNlRGF0YXtEZXN0UXVldWVJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFNlcnZpY2VEYXRhe0Rlc3RRdWV1ZX0gPSAkUXVldWU7CiAgICAgICAgICAgICAgICBkZWxldGUgJFNlcnZpY2VEYXRhe0Rlc3RRdWV1ZUlEfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ1RpY2tldFR5cGVJRHMnICkgewogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRTZXJ2aWNlRGF0YXtUaWNrZXRUeXBlSURzfSApICkgewogICAgICAgICAgICAgICAgICAgIG15IEBUaWNrZXRUeXBlczsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFRpY2tldFR5cGVJRCAoICRTZXJ2aWNlRGF0YXtUaWNrZXRUeXBlSURzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFRpY2tldFR5cGVzLCAkVHlwZU9iamVjdC0+VHlwZUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVJRCA9PiAkVGlja2V0VHlwZUlELAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkU2VydmljZURhdGF7VGlja2V0VHlwZXN9ID0gXEBUaWNrZXRUeXBlczsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJFNlcnZpY2VEYXRhe1RpY2tldFR5cGVJRHN9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBkZWxldGUgJFNlcnZpY2VEYXRhe0NoYW5nZUJ5fTsKICAgICAgICBkZWxldGUgJFNlcnZpY2VEYXRhe0NoYW5nZVRpbWV9OwogICAgICAgIGRlbGV0ZSAkU2VydmljZURhdGF7Q3JlYXRlQnl9OwogICAgICAgIGRlbGV0ZSAkU2VydmljZURhdGF7Q3JlYXRlVGltZX07CiAgICAgICAgZGVsZXRlICRTZXJ2aWNlRGF0YXtTZXJ2aWNlSUR9OwoKICAgICAgICAjIHVuaGFuZGxlZCBhdHRyaWJ1dGUsIHJlbGF0ZWQgdG8gSVRTTUNvcmUgYW5kIEdlbmVyYWxDYXRhbG9nCiAgICAgICAgZGVsZXRlICRTZXJ2aWNlRGF0YXtUeXBlSUR9OwoKICAgICAgICAkRXhwb3J0RGF0YXsgJFNlcnZpY2VEYXRhe05hbWV9IH0gPSBcJVNlcnZpY2VEYXRhOwogICAgfQoKICAgIHJldHVybiBcJUV4cG9ydERhdGE7Cn0KCnN1YiBJbXBvcnRTZXJ2aWNlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRVc2VySUQgPSAkU2VsZi0+e1VzZXJJRH0gfHwgJFBhcmFte1VzZXJJRH07CgogICAgbXkgJFF1ZXVlT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKTsKICAgIG15ICRTZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKTsKICAgIG15ICRUeXBlT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKTsKICAgIG15ICRWYWxpZE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyk7CiAgICBteSAlU2VydmljZUxpc3QgICA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMCwKICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICk7CiAgICBteSAlU2VydmljZUxvb2t1cCA9IHJldmVyc2UgJVNlcnZpY2VMaXN0OwoKICAgICMgc29ydCBzZXJ2aWNlcyBieSBwYXJlbnQgYXR0cmlidXRlCiAgICBteSBARmlyc3RMZXZlbFNlcnZpY2VzOwogICAgbXkgQENoaWxkU2VydmljZXM7CiAgICBmb3IgbXkgJFNlcnZpY2VOYW1lICgga2V5cyAkUGFyYW17U2VydmljZXN9LT4lKiApIHsKICAgICAgICBpZiAoICRQYXJhbXtTZXJ2aWNlc317JFNlcnZpY2VOYW1lfXtQYXJlbnR9ICkgewogICAgICAgICAgICBwdXNoIEBDaGlsZFNlcnZpY2VzLCAkU2VydmljZU5hbWU7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBwdXNoIEBGaXJzdExldmVsU2VydmljZXMsICRTZXJ2aWNlTmFtZTsKICAgICAgICB9CiAgICB9CiAgICBteSBAQ2hpbGRTZXJ2aWNlc1NvcnRlZCA9IHNvcnQgewogICAgICAgIGlmICggKCAkUGFyYW17U2VydmljZXN9eyRhfXtQYXJlbnR9IC8vICcnICkgZXEgJFBhcmFte1NlcnZpY2VzfXskYn17TmFtZX0gKSB7CiAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICggJFBhcmFte1NlcnZpY2VzfXskYn17UGFyZW50fSAvLyAnJyApIGVxICRQYXJhbXtTZXJ2aWNlc317JGF9e05hbWV9ICkgewogICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICB9IEBDaGlsZFNlcnZpY2VzOwoKICAgIFNFUlZJQ0VOQU1FOgogICAgZm9yIG15ICRTZXJ2aWNlTmFtZSAoIEBGaXJzdExldmVsU2VydmljZXMsIEBDaGlsZFNlcnZpY2VzU29ydGVkICkgewogICAgICAgIG15ICRTZXJ2aWNlRGF0YSA9ICRQYXJhbXtTZXJ2aWNlc317JFNlcnZpY2VOYW1lfTsKCiAgICAgICAgIyBza2lwIGlmIHBhcmVudCBhdHRyaWJ1dGUgcHJlc2VudCBidXQgbm8gY29ycmVzcG9uZGluZyBzZXJ2aWNlCiAgICAgICAgaWYgKCAkU2VydmljZURhdGEtPntQYXJlbnR9ICkgewogICAgICAgICAgICBteSAkUGFyZW50U2VydmljZUlEID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VMb29rdXAoCiAgICAgICAgICAgICAgICBOYW1lID0+ICRTZXJ2aWNlRGF0YS0+e1BhcmVudH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IFNFUlZJQ0VOQU1FIHVubGVzcyAkUGFyZW50U2VydmljZUlEOwoKICAgICAgICAgICAgJFNlcnZpY2VEYXRhLT57UGFyZW50SUR9ID0gJFBhcmVudFNlcnZpY2VJRDsKICAgICAgICB9CgogICAgICAgICMgaW4gY2FzZSBvZiBjaGlsZCBzZXJ2aWNlLCBjaGVjayBpZiBhbGwgcGFyZW50IHNlcnZpY2VzIGFyZSBwcmVzZW50CiAgICAgICAgIyAgIGVpdGhlciBpbiB0aGUgc3lzdGVtIG9yIGluIHRoZSBpbXBvcnQgZGF0YQogICAgICAgIG15IEBOYW1lRWxlbWVudHMgPSBzcGxpdCggLzo6LywgJFNlcnZpY2VEYXRhLT57TmFtZX0gKTsKICAgICAgICBpZiAoIHNjYWxhciBATmFtZUVsZW1lbnRzID4gMSApIHsKICAgICAgICAgICAgbXkgJE5hbWVTdHJnID0gJyc7CiAgICAgICAgICAgIGZvciBteSAkSW5kZXggKCAwIC4uICQjTmFtZUVsZW1lbnRzIC0gMSApIHsKICAgICAgICAgICAgICAgIGlmICgkTmFtZVN0cmcpIHsKICAgICAgICAgICAgICAgICAgICAkTmFtZVN0cmcgLj0gJzo6JyAuICROYW1lRWxlbWVudHNbJEluZGV4XTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICROYW1lU3RyZyAuPSAkTmFtZUVsZW1lbnRzWyRJbmRleF07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAhJFNlcnZpY2VMb29rdXB7JE5hbWVTdHJnfSAmJiAhJFBhcmFte1NlcnZpY2VzfXskTmFtZVN0cmd9ICkgewoKICAgICAgICAgICAgICAgICAgICAjIHBhcmVudCBlbGVtZW50IG5vdCBmb3VuZCwgc2tpcHBpbmcKICAgICAgICAgICAgICAgICAgICBuZXh0IFNFUlZJQ0VOQU1FOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkU2VydmljZUlEID0gJFNlcnZpY2VMb29rdXB7ICRTZXJ2aWNlRGF0YS0+e05hbWV9IH07CgogICAgICAgICMgc2tpcCBpZiBzZXJ2aWNlIHdpdGggc2FtZSBuYW1lIGV4aXN0cyBhbmQgb3ZlcndyaXRlIGlzIG5vdCBzZXQKICAgICAgICBuZXh0IFNFUlZJQ0VOQU1FIGlmICggISRQYXJhbXtPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzfSAmJiAkU2VydmljZUlEICk7CgogICAgICAgICMgdHJhbnNsYXRlIG5hbWVkIGRhdGEgYmFjayB0byBJRHMKICAgICAgICBpZiAoICRTZXJ2aWNlRGF0YS0+e0Rlc3RRdWV1ZX0gKSB7CiAgICAgICAgICAgICRTZXJ2aWNlRGF0YS0+e0Rlc3RRdWV1ZUlEfSA9ICRRdWV1ZU9iamVjdC0+UXVldWVMb29rdXAoCiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAkU2VydmljZURhdGEtPntEZXN0UXVldWV9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFNlcnZpY2VEYXRhLT57VGlja2V0VHlwZXN9ICkgKSB7CiAgICAgICAgICAgIG15IEBUaWNrZXRUeXBlSURzOwogICAgICAgICAgICBmb3IgbXkgJFRpY2tldFR5cGUgKCAkU2VydmljZURhdGEtPntUaWNrZXRUeXBlc30tPkAqICkgewogICAgICAgICAgICAgICAgcHVzaCBAVGlja2V0VHlwZUlEcywgJFR5cGVPYmplY3QtPlR5cGVMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAkVGlja2V0VHlwZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFNlcnZpY2VEYXRhLT57VGlja2V0VHlwZUlEc30gPSBcQFRpY2tldFR5cGVJRHM7CiAgICAgICAgfQogICAgICAgICRTZXJ2aWNlRGF0YS0+e1ZhbGlkSUR9ID0gJFZhbGlkT2JqZWN0LT5WYWxpZExvb2t1cCgKICAgICAgICAgICAgVmFsaWQgPT4gJFNlcnZpY2VEYXRhLT57VmFsaWR9LAogICAgICAgICk7CgogICAgICAgIGlmICgkU2VydmljZUlEKSB7CgogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlVXBkYXRlKAogICAgICAgICAgICAgICAgJFNlcnZpY2VEYXRhLT4lKiwKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VydmljZURhdGEtPntOYW1lU2hvcnR9LAogICAgICAgICAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIHVubGVzcyAkU3VjY2VzczsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICRTZXJ2aWNlSUQgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUFkZCgKICAgICAgICAgICAgICAgICRTZXJ2aWNlRGF0YS0+JSosCiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJFNlcnZpY2VEYXRhLT57TmFtZVNob3J0fSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gdW5sZXNzICRTZXJ2aWNlSUQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="Kernel/Autoload/SLAImportExport.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCgp1c2UgS2VybmVsOjpTeXN0ZW06OlNMQSAoKTsgICAgIyMgbm8gcGVybGltcG9ydHMKCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlNMQTsgICAjIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVGaWxlbmFtZU1hdGNoZXNQYWNrYWdlKQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdjUuMjQ7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSBJc0hhc2hSZWZXaXRoRGF0YSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTTEEnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnLAopOwoKc3ViIEV4cG9ydFNMQXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVXNlcklEID0gJFNlbGYtPntVc2VySUR9IHx8ICRQYXJhbXtVc2VySUR9OwoKICAgIG15ICVTTEFGaWx0ZXI7CiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte1NMQXN9ICkgKSB7CiAgICAgICAgJVNMQUZpbHRlciA9IG1hcCB7ICRfID0+IDEgfSAkUGFyYW17U0xBc30tPkAqOwogICAgfQoKICAgIG15ICRTTEFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U0xBJyk7CgogICAgbXkgJVNMQUxpc3QgPSAkU0xBT2JqZWN0LT5TTEFMaXN0KAogICAgICAgIFZhbGlkICA9PiAwLAogICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgKTsKCiAgICBteSAlRXhwb3J0RGF0YTsKICAgIFNMQUlEOgogICAgZm9yIG15ICRTTEFJRCAoIHNvcnQga2V5cyAlU0xBTGlzdCApIHsKCiAgICAgICAgbXkgJVNMQURhdGEgPSAkU0xBT2JqZWN0LT5TTEFHZXQoCiAgICAgICAgICAgIFNMQUlEICA9PiAkU0xBSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICk7CgogICAgICAgIGlmICglU0xBRmlsdGVyKSB7CiAgICAgICAgICAgIG5leHQgU0xBSUQgdW5sZXNzICRTTEFGaWx0ZXJ7ICRTTEFEYXRhe05hbWV9IH07CiAgICAgICAgfQoKICAgICAgICAjIHRyYW5zbGF0ZSBJRHMgaW50byBuYW1lcyBvciBuYW1lLWxpa2UgaWRlbnRpZmllcnMKICAgICAgICBteSAkU2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyk7CiAgICAgICAgbXkgJFZhbGlkT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKTsKCiAgICAgICAgQVRUUklCVVRFOgogICAgICAgIGZvciBteSAkQXR0cmlidXRlICgga2V5cyAlU0xBRGF0YSApIHsKCiAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIHVubGVzcyAkQXR0cmlidXRlID1+IC9JRC87CgogICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGUgZXEgJ1ZhbGlkSUQnICkgewogICAgICAgICAgICAgICAgbXkgJFZhbGlkID0gJFZhbGlkT2JqZWN0LT5WYWxpZExvb2t1cCgKICAgICAgICAgICAgICAgICAgICBWYWxpZElEID0+ICRTTEFEYXRhe1ZhbGlkSUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTTEFEYXRhe1ZhbGlkfSA9ICRWYWxpZDsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkU0xBRGF0YXtWYWxpZElEfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ1NlcnZpY2VJRHMnICkgewogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRTTEFEYXRhe1NlcnZpY2VJRHN9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQFNlcnZpY2VzOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkU2VydmljZUlEICggJFNMQURhdGF7U2VydmljZUlEc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBTZXJ2aWNlcywgJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJFNlcnZpY2VJRCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJFNMQURhdGF7U2VydmljZXN9ID0gXEBTZXJ2aWNlczsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJFNMQURhdGF7U2VydmljZUlEc307CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgb2JzZXJ2YXRpb24gc2hvd2VkIHRoYXQgVHlwZSBhbmQgVHlwZUlEIGJvdGggYXJlIHVzdWFsbHkgcHJlc2VudAogICAgICAgIGRlbGV0ZSAkU0xBRGF0YXtUeXBlSUR9OwoKICAgICAgICBkZWxldGUgJFNMQURhdGF7Q2hhbmdlQnl9OwogICAgICAgIGRlbGV0ZSAkU0xBRGF0YXtDaGFuZ2VUaW1lfTsKICAgICAgICBkZWxldGUgJFNMQURhdGF7Q3JlYXRlQnl9OwogICAgICAgIGRlbGV0ZSAkU0xBRGF0YXtDcmVhdGVUaW1lfTsKICAgICAgICBkZWxldGUgJFNMQURhdGF7U0xBSUR9OwoKICAgICAgICAkRXhwb3J0RGF0YXsgJFNMQURhdGF7TmFtZX0gfSA9IFwlU0xBRGF0YTsKICAgIH0KCiAgICByZXR1cm4gXCVFeHBvcnREYXRhOwp9CgpzdWIgSW1wb3J0U0xBcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRVc2VySUQgPSAkU2VsZi0+e1VzZXJJRH0gfHwgJFBhcmFte1VzZXJJRH07CgogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkU2VydmljZU9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpOwogICAgbXkgJFNMQU9iamVjdCAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNMQScpOwogICAgbXkgJFZhbGlkT2JqZWN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyk7CiAgICBteSAlU0xBTGlzdCAgICAgICAgICAgICAgPSAkU0xBT2JqZWN0LT5TTEFMaXN0KAogICAgICAgIFZhbGlkICA9PiAwLAogICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgKTsKICAgIG15ICVTTEFMb29rdXAgICA9IHJldmVyc2UgJVNMQUxpc3Q7CiAgICBteSAkU0xBVHlwZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpTTEE6OlR5cGUnLAogICAgICAgIFZhbGlkID0+IDAsCiAgICApOwogICAgbXkgJVNMQVR5cGVMb29rdXAgPSByZXZlcnNlICRTTEFUeXBlTGlzdC0+JSo7CgogICAgU0xBTkFNRToKICAgIGZvciBteSAkU0xBTmFtZSAoIGtleXMgJFBhcmFte1NMQXN9LT4lKiApIHsKICAgICAgICBteSAkU0xBRGF0YSA9ICRQYXJhbXtTTEFzfXskU0xBTmFtZX07CgogICAgICAgIG15ICRTTEFJRCA9ICRTTEFMb29rdXB7ICRTTEFEYXRhLT57TmFtZX0gfTsKCiAgICAgICAgIyBza2lwIGlmIFNMQSB3aXRoIHNhbWUgbmFtZSBleGlzdHMgYW5kIG92ZXJ3cml0ZSBpcyBub3Qgc2V0CiAgICAgICAgbmV4dCBTTEFOQU1FIGlmICggISRQYXJhbXtPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzfSAmJiAkU0xBSUQgKTsKCiAgICAgICAgIyB0cmFuc2xhdGUgbmFtZWQgZGF0YSBiYWNrIHRvIElEcwogICAgICAgICRTTEFEYXRhLT57VHlwZUlEfSA9ICRTTEFUeXBlTG9va3VweyAkU0xBRGF0YS0+e1R5cGV9IH07CiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRTTEFEYXRhLT57U2VydmljZXN9ICkgKSB7CiAgICAgICAgICAgIG15IEBTZXJ2aWNlSURzOwogICAgICAgICAgICBmb3IgbXkgJFNlcnZpY2UgKCAkU0xBRGF0YS0+e1NlcnZpY2VzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBTZXJ2aWNlSURzLCAkU2VydmljZU9iamVjdC0+U2VydmljZUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRTZXJ2aWNlLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkU0xBRGF0YS0+e1NlcnZpY2VJRHN9ID0gXEBTZXJ2aWNlSURzOwogICAgICAgIH0KICAgICAgICAkU0xBRGF0YS0+e1ZhbGlkSUR9ID0gJFZhbGlkT2JqZWN0LT5WYWxpZExvb2t1cCgKICAgICAgICAgICAgVmFsaWQgPT4gJFNMQURhdGEtPntWYWxpZH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRTTEFJRCkgewoKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU0xBT2JqZWN0LT5TTEFVcGRhdGUoCiAgICAgICAgICAgICAgICAkU0xBRGF0YS0+JSosCiAgICAgICAgICAgICAgICBTTEFJRCAgPT4gJFNMQUlELAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiB1bmxlc3MgJFN1Y2Nlc3M7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAkU0xBSUQgPSAkU0xBT2JqZWN0LT5TTEFBZGQoCiAgICAgICAgICAgICAgICAkU0xBRGF0YS0+JSosCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIHVubGVzcyAkU0xBSUQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="Kernel/Config/Files/XML/ServiceCatalog.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJBcHBsaWNhdGlvbiI+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWRtaW5TZXJ2aWNlSW1wb3J0RXhwb3J0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZG1pbiBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+YWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iPlNlcnZpY2UgSW1wb3J0IEV4cG9ydDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5TZXJ2aWNlSW1wb3J0RXhwb3J0PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+QWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFkbWluU2VydmljZUltcG9ydEV4cG9ydCMjIzAwMi1TZXJ2aWNlQ2F0YWxvZyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkFkbWluLlNlcnZpY2VJbXBvcnRFeHBvcnQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWRtaW5TTEFJbXBvcnRFeHBvcnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFkbWluIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+U0xBIEltcG9ydCBFeHBvcnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+U0xBSW1wb3J0RXhwb3J0PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+QWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFkbWluU0xBSW1wb3J0RXhwb3J0IyMjMDAyLVNlcnZpY2VDYXRhbG9nIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFkbWluOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuQWRtaW4uU0xBSW1wb3J0RXhwb3J0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJEYXNoYm9hcmQ6OlRpbGVzIyMjU2VydmljZUNhdGFsb2ctMDEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGlsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDdXN0b21lckRhc2hib2FyZC4gTW9kdWxlIGlzIHJlcXVpcmVkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpEYXNoYm9hcmQ6OlRpbGVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9yZGVyIj43PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpDdXN0b21lckRhc2hib2FyZDo6VGlsZVNlcnZpY2VDYXRhbG9nPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWciPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkhlYWRlclRleHQiIFRyYW5zbGF0YWJsZT0iMSI+RmluZCB0aGUgcmlnaHQgc2VydmljZSBmb3IgeW91ciB0aWNrZXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDwhLS0gRklYTUU6IFRoaXMgY291bGQgYmUgcmVuYW1lZDsgd291bGQgcHJvYmFibHkgYnJlYWsgZXhpc3RpbmcgY29uZmlncyBvbiBpbnN0YWxsZWQgc3lzdGVtcyAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRGFzaGJvYXJkOjpDb25maWd1cmF0aW9uOjpTZXJ2aWNlQ2F0YWxvZyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BZGRpdGlvbmFsIHNldHRpbmdzIGZvciB0aGUgc2VydmljZSBjYXRhbG9nLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpEYXNoYm9hcmQ6OkNvbmZpZ3VyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSW5jaWRlbnQiPm9vb2ZvLWJhbmcgb29vQ29sb3ItUmVkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJbmNpZGVudDo6TWFqb3IiPm9vb2ZvLWJhbmcgb29vQ29sb3ItUmVkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZXJ2aWNlUmVxdWVzdCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcm9ibGVtIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlJmQyI+PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRGFzaGJvYXJkOjpDb25maWd1cmF0aW9uOjpTZXJ2aWNlQ2F0YWxvZyMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgc2VydmljZSBjYXRhbG9nIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpEYXNoYm9hcmQ6OkNvbmZpZ3VyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkR5bmFtaWNGaWVsZFNjcmVlbnMjIyNTZXJ2aWNlQ2F0YWxvZyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGlzIGNvbmZpZ3VyYXRpb24gZGVmaW5lcyBhbGwgcG9zc2libGUgc2NyZWVucyB0byBlbmFibGUgb3IgZGlzYWJsZSBkeW5hbWljIGZpZWxkcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpEeW5hbWljRmllbGRTY3JlZW5zPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyRGFzaGJvYXJkOjpDb25maWd1cmF0aW9uOjpTZXJ2aWNlQ2F0YWxvZyMjI0R5bmFtaWNGaWVsZCI+Q3VzdG9tZXJEYXNoYm9hcmRUaWxlIFNlcnZpY2VDYXRhbG9nPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkR5bmFtaWNGaWVsZFNjcmVlbnM6Ok9iamVjdFR5cGVzIyMjU2VydmljZUNhdGFsb2ciIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6RHluYW1pY0ZpZWxkU2NyZWVuczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPlNlcnZpY2U8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRGFzaGJvYXJkOjpDb25maWd1cmF0aW9uOjpTZXJ2aWNlQ2F0YWxvZyMjI1NvcnRCeVRpY2tldFR5cGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvdyBzZXJ2aWNlcyB3aXRoIHRoZSBmb2xsb3dpbmcgdGlja2V0IHR5cGUgbGFzdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6RGFzaGJvYXJkOjpDb25maWd1cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+SW5jaWRlbnQ8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRGFzaGJvYXJkOjpDb25maWd1cmF0aW9uOjpTZXJ2aWNlQ2F0YWxvZyMjI0ZBUURlc2NyaXB0aW9uRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhlIEZBUSBmaWVsZCB0aGF0IHNob3VsZCBiZSB1c2VkIGFzIHRoZSBkZXNjcmlwdGlvbiBvZiBhbiBGQVEgYXJ0aWNsZSBpbiB0aGUgc2lkZWJhciAoZS5nLiBGaWVsZDEsIEZpZWxkMiwgRmllbGQzLi4uKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6RGFzaGJvYXJkOjpDb25maWd1cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+RmllbGQxPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6Q3VzdG9tZXJEYXNoYm9hcmQjIyMwMDMtQ3VzdG9tZXJEYXNoYm9hcmQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkRhc2hib2FyZC5UaWxlU2VydmljZUNhdGFsb2cuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLldpZGdldC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLlVJLm9vb1dpZGdldC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5DdXN0b21lci5UaWxlU2VydmljZUNhdGFsb2cuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lclRpbGVTZXJ2aWNlQ2F0YWxvZyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q3VzdG9tZXJUaWxlU2VydmljZUNhdGFsb2cgQUpBWCBNb2R1bGUuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+U2VydmljZSBDYXRhbG9nPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkR5bmFtaWNGaWVsZHM6Ok9iamVjdFR5cGUjIyNTZXJ2aWNlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWNGaWVsZCBvYmplY3QgcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RHluYW1pY0ZpZWxkczo6T2JqZWN0VHlwZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEaXNwbGF5TmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5TZXJ2aWNlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6Ok9iamVjdFR5cGU6OlNlcnZpY2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjE0MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlT2JqZWN0TmFtZSI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNscyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgQUNMcyBmb3IgZGlmZmVyZW50IGludGVyZmFjZXMgd2hlbiBjcmVhdGluZyBzZXJ2aWNlcy4gU2VydmljZXMgd2lsbCB0aGVuIG9ubHkgYmUgZGlzcGxheWVkIGlmIHRoZSB0aWNrZXQgdHlwZSBzdG9yZWQgaW4gdGhlIHNlcnZpY2UgaGFzIGJlZW4gc2VsZWN0ZWQuIFRoZSAiQWRkQnVsa0FDTCIgY29uc29sZSBzY3JpcHQgY2FuIGFsc28gYmUgdXNlZCB0byBjcmVhdGUgQUNMcyBmb3Igc2VydmljZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBjcmVhdGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpBY2w8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlNlcnZpY2VDYXRhbG9nOjpDcmVhdGVUeXBlU2VydmljZVJlbGF0ZWRBY2xzOjpPcHRpb25zIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoaXMgb3B0aW9uIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHByZWNvbmZpZ3VyZSB0aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgQUNMcy4gVGhlIGFpbSBpcyB0byBvbmx5IGRpc3BsYXkgdGhlIHNlcnZpY2VzIHRoYXQgaGF2ZSBhbHNvIGJlZW4gYXNzaWduZWQgdG8gdGhlIHNlcnZpY2UgaW4gdGhlIHNlcnZpY2UgY2F0YWxvZy4gVG8gdXNlIHRoaXMgZnVuY3Rpb24sIHBsZWFzZSBmaXJzdCBlbmFibGUgdGhlICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNscyIgb3B0aW9uLiAiR2VuZXJhdGVJbml0YWxBQ0xUb0Rpc2FibGVBbGxTZXJ2aWNlcyIgZ2VuZXJhdGVzIGFuIEFDTCB0aGF0IGluaXRpYWxseSBoaWRlcyBhbGwgc2VydmljZXMuIFRoZSB2YWx1ZSAiUG9zc2libGUiIG9yICJQb3NzaWJsZUFkZCIgY2FuIGJlIHNldCBmb3IgdGhlIGtleSAiQ29uZmlnQ2hhbmdlIi4gVGhlICJEZXBsb3lOZXdBQ0wiIGtleSBkZWNpZGVzIHdoZXRoZXIgdGhlIGNoYW5nZWQgQUNMIHNob3VsZCBhbHNvIGJlIGRlcGxveWVkIGltbWVkaWF0ZWx5LiAiQUNMVmFsaWRJRCIgKDEsIDIsIDMpIHNldHMgdGhlIEFDTHMgdG8gdmFsaWQsIGludmFsaWQgb3IgdGVtcG9yYXJpbHkgaW52YWxpZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkFjbDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGcm9udGVuZEFjdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5DdXN0b21lclRpY2tldE1lc3NhZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkFnZW50VGlja2V0UGhvbmU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkFnZW50VGlja2V0RW1haWw8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkFnZW50VGlja2V0RnJlZVRleHQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR2VuZXJhdGVJbml0YWxBQ0xUb0Rpc2FibGVBbGxTZXJ2aWNlcyI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnQ2hhbmdlIj5Qb3NzaWJsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQUNMRGVwbG95Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBQ0xWYWxpZElEIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RXZlbnRNb2R1bGVQb3N0IyMjOTcwMC1TZXREeW5hbWljRmllbGRDcml0aWNhbGl0eUZyb21TZXJ2aWNlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkV2ZW50IG1vZHVsZSByZWdpc3RyYXRpb24uIEN1cnJlbnRseSwgdGhlIGNyaXRpY2FsaXR5IG9mIHRoZSBzZXJ2aWNlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgc2VydmljZSwgYnV0IHRoaXMgaGFzIG5vIGVmZmVjdC4gVGhlcmVmb3JlLCB0aGlzIGV2ZW50IG1vZHVsZSBoYXMgYmVlbiBpbXBsZW1lbnRlZCB0aGF0IGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgRHluYW1pY0ZpZWxkIENyaXRpY2FsaXR5IGluIGEgdGlja2V0IGFzIHNvb24gYXMgYSBzZXJ2aWNlIGhhcyBiZWVuIGFzc2lnbmVkLiBQbGVhc2UgYWN0aXZhdGUgdGhlIFN5c0NvbmZpZyBvcHRpb24gU2V0UHJpb3JpdHlGcm9tQ3JpdGljYWxpdHlBbmRJbXBhY3RNYXRyaXggdG8gc2V0IHRoZSBwcmlvcml0eSBpbiB0aGUgbmV4dCBzdGVwIGJhc2VkIGFuIENyaXRpY2FsaXR5IGFuZCBJbXBhY3QuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6VGlja2V0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OlRpY2tldDo6RXZlbnQ6OlNldER5bmFtaWNGaWVsZENyaXRpY2FsaXR5RnJvbVNlcnZpY2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRyYW5zYWN0aW9uIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+VGlja2V0U2VydmljZVVwZGF0ZXxUaWNrZXRDcmVhdGU8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyM5ODAwLVNldFByaW9yaXR5RnJvbUNyaXRpY2FsaXR5QW5kSW1wYWN0TWF0cml4IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkV2ZW50IG1vZHVsZSByZWdpc3RyYXRpb24uIEN1cnJlbnRseSwgdGhlIGNyaXRpY2FsaXR5IG9mIHRoZSBzZXJ2aWNlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgc2VydmljZSwgYnV0IHRoaXMgaGFzIG5vIGVmZmVjdC4gVGhlcmVmb3JlLCB0aGlzIGV2ZW50IG1vZHVsZSBoYXMgYmVlbiBpbXBsZW1lbnRlZCB0aGF0IGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgcHJpb3JpdHkgcmVnYXJkaW5nIENyaXRpY2FsaXR5IGFuZCBJbXBhY3QgaW4gYSB0aWNrZXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6VGlja2V0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OlRpY2tldDo6RXZlbnQ6OlNldFByaW9yaXR5RnJvbUNyaXRpY2FsaXR5QW5kSW1wYWN0TWF0cml4PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUcmFuc2FjdGlvbiI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPlRpY2tldER5bmFtaWNGaWVsZFVwZGF0ZV9JVFNNQ3JpdGljYWxpdHl8VGlja2V0RHluYW1pY0ZpZWxkVXBkYXRlX0lUU01JbXBhY3Q8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50SVRTTVNlcnZpY2Vab29tIyMjMDAyLVNlcnZpY2VDYXRhbG9nIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuSVRTTVNlcnZpY2Vab29tLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQXV0b2xvYWRQZXJsUGFja2FnZXMjIyMwMDItU2VydmljZUltcG9ydEV4cG9ydCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdXRvbG9hZCBjb25maWd1cmF0aW9uIGZvciBTZXJ2aWNlIGltcG9ydCBhbmQgZXhwb3J0IGZ1bmN0aW9ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkF1dG9sb2FkPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPktlcm5lbDo6QXV0b2xvYWQ6OlNlcnZpY2VJbXBvcnRFeHBvcnQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkF1dG9sb2FkUGVybFBhY2thZ2VzIyMjMDAyLVNMQUltcG9ydEV4cG9ydCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdXRvbG9hZCBjb25maWd1cmF0aW9uIGZvciBTTEEgaW1wb3J0IGFuZCBleHBvcnQgZnVuY3Rpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6QXV0b2xvYWQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+S2VybmVsOjpBdXRvbG9hZDo6U0xBSW1wb3J0RXhwb3J0PC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgo=</File>
        <File Location="Kernel/Language/de_ServiceCatalog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX1NlcnZpY2VDYXRhbG9nOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5TTEFJbXBvcnRFeHBvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBleHBvcnQgYSBjb25maWd1cmF0aW9uIGZpbGUgb2YgU0xBcyB0byBpbXBvcnQgdGhlc2Ugb24gYW5vdGhlciBzeXN0ZW0uIFRoZSBjb25maWd1cmF0aW9uIGZpbGUgaXMgZXhwb3J0ZWQgaW4geW1sIGZvcm1hdC4nfSA9CiAgICAgICAgJ0hpZXIga2FubiBlaW5lIFNMQS1Lb25maWd1cmF0aW9uc2RhdGVpIGV4cG9ydGllcnQgd2VyZGVuLCBkaWUgYXVmIGVpbmVtIGFuZGVyZW4gU3lzdGVtIGltcG9ydGllcnQgd2VyZGVuIGthbm4uIERpZSBLb25maWd1cmF0aW9uc2RhdGVpIGlzdCBpbSBZTUwtRm9ybWF0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTTEFzIExpc3QnfSA9ICdTTEEtTGlzdGUnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluU2VydmljZUltcG9ydEV4cG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGV4cG9ydCBhIGNvbmZpZ3VyYXRpb24gZmlsZSBvZiBzZXJ2aWNlcyB0byBpbXBvcnQgdGhlc2Ugb24gYW5vdGhlciBzeXN0ZW0uIFRoZSBjb25maWd1cmF0aW9uIGZpbGUgaXMgZXhwb3J0ZWQgaW4geW1sIGZvcm1hdC4nfSA9CiAgICAgICAgJ0hpZXIga2FubiBlaW5lIFNlcnZpY2UtS29uZmlndXJhdGlvbnNkYXRlaSBleHBvcnRpZXJ0IHdlcmRlbiwgZGllIGF1ZiBlaW5lbSBhbmRlcmVuIFN5c3RlbSBpbXBvcnRpZXJ0IHdlcmRlbiBrYW5uLiBEaWUgS29uZmlndXJhdGlvbnNkYXRlaSBpc3QgaW0gWU1MLUZvcm1hdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZXMgTGlzdCd9ID0gJ1NlcnZpY2UtTGlzdGUnOwoKICAgICMgVGVtcGxhdGU6IFRpbGVTZXJ2aWNlQ2F0YWxvZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBkZXRhaWxzIG9mIHRoaXMgc2VydmljZS4nfSA9ICdaZWlnZSBkaWUgRGV0YWlscyB2b24gZGllc2VtIFNlcnZpY2UuJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pblNMQQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIHVwbG9hZCBhIGNvbmZpZ3VyYXRpb24gZmlsZSB0byBpbXBvcnQgU0xBcyB0byB5b3VyIHN5c3RlbS4gVGhlIGZpbGUgbmVlZHMgdG8gYmUgaW4gLnltbCBmb3JtYXQgYXMgZXhwb3J0ZWQgYnkgU0xBIG1hbmFnZW1lbnQgbW9kdWxlLid9ID0KICAgICAgICAnSGllciBrYW5uIGVpbmUgS29uZmlndXJhdGlvbnNkYXRlaSBob2NoZ2VsYWRlbiB3ZXJkZW4sIHVtIFNMQXMgaW4gZGFzIFN5c3RlbSB6dSBpbXBvcnRpZXJlbi4gRGllc2UgRGF0ZWkgbXVzcyBpbSBZTUwtRm9ybWF0IHNlaW4sIHNvIHdpZSBzaWUgZHVyY2ggZGFzIFNMQS1WZXJ3YWx0dW5nc21vZHVsIGV4cG9ydGllcnQgd2lyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0xBcyBJbXBvcnQnfSA9ICdTTEFzIGltcG9ydGllcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NMQXMgRXhwb3J0J30gPSAnU0xBcyBleHBvcnRpZXJlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pbXVtIFRpbWUgQmV0d2VlbiBJbmNpZGVudHMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluU2VydmljZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIHVwbG9hZCBhIGNvbmZpZ3VyYXRpb24gZmlsZSB0byBpbXBvcnQgc2VydmljZXMgdG8geW91ciBzeXN0ZW0uIFRoZSBmaWxlIG5lZWRzIHRvIGJlIGluIC55bWwgZm9ybWF0IGFzIGV4cG9ydGVkIGJ5IHRoZSBzZXJ2aWNlIG1hbmFnZW1lbnQgbW9kdWxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2VzIEltcG9ydCd9ID0gJ1NlcnZpY2VzIGltcG9ydGllcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2VzIEV4cG9ydCd9ID0gJ1NlcnZpY2VzIGV4cG9ydGllcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyaXRpY2FsaXR5J30gPSAnS3JpdGlrYWxpdMOkdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIGRlcGVuZHMgb24gdGhlIGZvbGxvd2luZyB0aWNrZXQgdHlwZXMnfSA9ICdEZXIgU2VydmljZSB3aXJkIGbDvHIgZm9sZ2VuZGUgVGlja2V0LVR5cGVuIGFuZ2V6ZWlndCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZGVzdGluYXRpb24gcXVldWUnfSA9ICdUaWNrZXQgWmllbC1RdWV1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBkZWZhdWx0IHNlcnZpY2UnfSA9ICdTZXJ2aWNlIGbDvHIgYWxsZSBLdW5kZW4gYW56ZWlnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdTY2hsw7xzc2Vsd8O2cnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIERlc2NyaXB0aW9uJ30gPSAnU2VydmljZS1CZXNjaHJlaWJ1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyBub3QgcHJlc2VudCBvciBlbmFibGVkIG9uIHRoZSBzeXN0ZW0uIFRoaXMgc2VydmljZSBkZXNjcmlwdGlvbiBjb3VsZCBiZSBkZWxldGVkIGlmIGl0IGlzIG5vdCBuZWVkZWQgYW55bW9yZS4nfSA9CiAgICAgICAgJ0RpZXNlIFNwcmFjaGUgaXN0IG5pY2h0IHZlcmbDvGdiYXIgb2RlciBhdWYgZGVtIFN5c3RlbSBha3RpdmllcnQuIERpZSBTZXJ2aWNlLUJlc2NocmVpYnVuZyBrYW5uIGdlbMO2c2NodCB3ZXJkZW4sIHNvZmVybiBzaWUgbmljaHQgbWVociBiZW7DtnRpZ3Qgd2lyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVtb3ZlIFNlcnZpY2UgRGVzY3JpcHRpb24gTGFuZ3VhZ2UnfSA9ICdTcHJhY2hlIGRlciBTZXJ2aWNlLUJlc2NocmVpYnVuZyBlbnRmZXJuZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIG5ldyBzZXJ2aWNlIGRlc2NyaXB0aW9uIGxhbmd1YWdlJ30gPSAnTmV1ZSBTcHJhY2hlIGRlciBTZXJ2aWNlLUJlc2NocmVpYnVuZyBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcHRpb24gUmVmZXJlbmNlJ30gPSAnS29uZmlndXJhdGlvbnNyZWZlcmVueic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIG9wdGlvbnMnfSA9ICdEaWUgZm9sZ2VuZGVuIE9wdGlvbmVuIGvDtm5uZW4gdmVyd2VuZGV0IHdlcmRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaXRoaW4gdGhlIFNlcnZpY2VDYXRhbG9ndWUgdGlsZSBpbiB0aGUgY3VzdG9tZXIgZGFzaGJvYXJkLCBpdCBpcyBwb3NzaWJsZSB0byBzaG93IHRpY2tldCB0eXBlcyBmb3IgcHJlY29uZmlndXJlZCB0aWNrZXQgY3JlYXRpb24gaW5zaWRlIHRoZSBzZXJ2aWNlIGRlc2NyaXB0aW9uLiBGdXJ0aGVybW9yZSwgaXQgaXMgcG9zc2libGUgdG8gcmVzdHJpY3QgdGhlIHNlcnZpY2VzIGZvciBvdGhlciBzY3JlZW5zIHVzaW5nIHRoZSB0aWNrZXQgdHlwZXMgc2V0IGhlcmUuIElmIHlvdSB3aXNoIHRvIGRvIHRoaXMsIHBsZWFzZSBhY3RpdmF0ZSB0aGUgb3B0aW9ucyAiU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHMiIGFuZCAiU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHM6Ok9wdGlvbnMiIGluIHRoZSBPVE9CTyBzeXN0ZW0gY29uZmlndXJhdGlvbi4gVGhlIHJlc3RyaWN0aW9uIGlzIG1hZGUgdmlhIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIEFDTHMsIHdoaWNoIGNhbiBiZSB2aWV3ZWQgdW5kZXIgIkFkbWluIC0+IEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0wpIi4gSWYgbmVjZXNzYXJ5LCBwbGVhc2UgYWRqdXN0IHRoZSBvcHRpb24gIlNlcnZpY2VDYXRhbG9nOjpDcmVhdGVUeXBlU2VydmljZVJlbGF0ZWRBY2xzOjpPcHRpb25zIiBhY2NvcmRpbmcgdG8geW91ciByZXF1aXJlbWVudHMuJ30gPQogICAgICAgICdJbm5lcmhhbGIgZGVyIFNlcnZpY2VrYXRhbG9nLUthY2hlbCBpbSBLdW5kZW4tRGFzaGJvYXJkIGlzdCBlcyBtw7ZnbGljaCwgVGlja2V0dHlwZW4gaW4gZGVyIFNlcnZpY2UtQmVzY2hyZWlidW5nIGbDvHIgZWluZSB2b3Jrb25maWd1cmllcnRlIFRpY2tldGVyc3RlbGx1bmcgYW56dXplaWdlbi4gV2VpdGVyaGluIGlzdCBlcyBtw7ZnbGljaCwgZGllIFNlcnZpY2VzIGbDvHIgYW5kZXJlIE9iZXJmbMOkY2hlbiBlaW56dXNjaHLDpG5rZW4sIGF1ZiBHcnVuZGxhZ2UgZGVyIGhpZXIgdmVyd2VuZGV0ZW4gVGlja2V0dHlwZW4uIElzdCBkaWVzZXMgdmVyaGFsdGVuIGdld8O8bnNjaHQsIGJpdHRlIGRpZSBFaW5zdGVsbHVuZ2VuICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNscyIgdW5kICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNsczo6T3B0aW9ucyIgaW4gZGVyIE9UT0JPIFN5c3RlbWtvbmZpZ3VyYXRpb24gYWt0aXZpZXJlbi4gRGllc2UgRWluc2NocsOkbmt1bmcgd2lyZCDDvGJlciBhdXRvbWF0aXNjaCBlcnN0ZWxsdGUgQUNMcyB1bWdlc2V0enQsIGRpZSB1bnRlciAiQWRtaW4gLT4gQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTCkiIGFuZ2VzZWhlbiB3ZXJkZW4ga8O2bm5lbi4gU29mZXJuIG7DtnRpZywgYml0dGUgZGllIEVpbnN0ZWxsdW5nICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNsczo6T3B0aW9ucyIgYW4gZGllIEFuZm9yZGVydW5nZW4gYW5wYXNzZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHdlIHdvcmsgc2VydmljZS1iYXNlZCwgd2UgZG8gbm90IHdhbnQgdG8gb2ZmZXIgdGhlIGN1c3RvbWVyIGEgY2hvaWNlIG9mIHF1ZXVlcyBpbiB0aGUgY3VzdG9tZXIgcG9ydGFsIHdoZW4gY3JlYXRpbmcgYSB0aWNrZXQsIGJ1dCBkZWNpZGUgb24gdGhlIGJhc2lzIG9mIHRoZSBzZXJ2aWNlIGludG8gd2hpY2ggcXVldWUgKG9yIHdoaWNoIHRlYW0gb2YgYWdlbnRzKSB0aGUgdGlja2V0IHNob3VsZCBiZSBwcm9jZXNzZWQgZmlyc3QuIEluIG9yZGVyIHRvIHVzZSB0aGlzIG9wdGlvbiBzZW5zaWJseSwgcGxlYXNlIGRlYWN0aXZhdGUgdGhlIG9wdGlvbiAiVGlja2V0OjpGcm9udGVuZDo6Q3VzdG9tZXJUaWNrZXRNZXNzYWdlIyMjUXVldWUiIGFuZCBzZXQgYSBzZW5zaWJsZSBkZWZhdWx0IHF1ZXVlIGluIHRoZSBvcHRpb24gIlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0TWVzc2FnZSMjI1F1ZXVlRGVmYXVsdCIuIEFzIHNvb24gYXMgeW91IHNldCBhICJUaWNrZXQgZGVzdGluYXRpb24gcXVldWUiIGhlcmUgaW4gdGhlIHNlcnZpY2UsIHRoZSB0aWNrZXQgd2lsbCBpbW1lZGlhdGVseSBiZSBjcmVhdGVkIGluIHRoaXMgcXVldWUuIElmIHRoZSBmaWVsZCByZW1haW5zIGVtcHR5LCB0aGUgZGVmYXVsdCBxdWV1ZSBjb25maWd1cmVkIGFib3ZlIHdpbGwgYmUgdXNlZC4nfSA9CiAgICAgICAgJ1NvZmVybiBTZXJpdmNlLWJhc2llcnQgZ2VhcmJlaXRldCB3aXJkLCBzb2xsIGRlbSBLdW5kZW4gaW0gS3VuZGVucG9ydGFsIHfDpGhyZW5kIGRlciBUaWNrZXRlcnN0ZWxsdW5nIHp3YXIgZWluZSBBdXN3YWhsIGRlciBRdWV1ZXMgYW5nZXplaWd0IHdlcmRlbiwgamVkb2NoIHNvbGwgZGllIEVudHNjaGVpZHVuZyAsIGluIHdlbGNoZXIgUXVldWUgKG9kZXIgd2VsY2hlbSBBZ2VudGVuLVRlYW0pIGRhcyBUaWNrZXQgenVuw6RjaHN0IGJlYXJiZWl0ZXQgd2VyZGVuIHNvbGwsIGF1ZiBCYXNpcyBkZXMgU2VydmljZSBnZXRyb2ZmZW4gd2VyZGVuLiBVbSBkaWVzZSBPcHRpb24gdmVybsO8bmZ0aWcgenUgdmVyd2VuZGVuLCBzb2xsdGUgZGllIEVpbnN0ZWxsdW5nICJUaWNrZXQ6OkZyb250ZW5kOjpDdXN0b21lclRpY2tldE1lc3NhZ2UjIyNRdWV1ZSIgZGVha3RpdmllcnQgd2VyZGVuIHVuZCBlaW5lIHNpbm52b2xsZSBTdGFuZGFyZC1RdWV1ZSBpbiBkZXIgRWluc3RlbGx1bmcgIlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0TWVzc2FnZSMjI1F1ZXVlRGVmYXVsdCIgZ2VzZXR6dCB3ZXJkZW4uIFNvYmFsZCBoaWVyIGltIFNlcnZpY2UgZWluZSAiVGlja2V0IFppZWwtUXVldWUiIGVpbmdlc3RlbGx0IHd1cmRlLCB3aXJkIGRhcyBUaWNrZXQgdW5taXR0ZWxiYXIgaW4gZGllc2VyIFF1ZXVlIGVyc3RlbGx0LiBTb2Zlcm4gZGFzIEZlbGQgbGVlciBibGVpYnQsIHdpcmQgZGllIG9iZW4gZ2VzZXR6dGUgRGVmYXVsdC1RdWV1ZSB2ZXJ3ZW5kZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHlvdSBkbyBub3QgYXNzaWduIHNlcnZpY2VzIHRvIGN1c3RvbWVycyBvciBjb21wYW5pZXMgaW5kaXZpZHVhbGx5LCBidXQgYWxsIHNlcnZpY2VzIGFyZSBpbml0aWFsbHkgb2ZmZXJlZCB0byB5b3VyIGN1c3RvbWVycyBmb3Igc2VsZWN0aW9uLCB0aGUgc3RlcCBvZiByZWxlYXNpbmcgZWFjaCBzZXJ2aWNlIGFzIGEgImRlZmF1bHQiIHNlcnZpY2UgdW5kZXIgIkFkbWluIC0+IEN1c3RvbWVyIHVzZXIgPC0+IFNlcnZpY2UiIChvciAiQ3VzdG9tZXIgPC0+IFNlcnZpY2UiKSBjYW4gYmUgYnlwYXNzZWQgaGVyZS4gT2YgY291cnNlLCBpbiB0aGUgbmV4dCBzdGVwIGl0IGlzIHBvc3NpYmxlIHRvIHJlc3RyaWN0IHRoZSBzZXJ2aWNlcyB2aWEgQUNMcy4nfSA9CiAgICAgICAgJ1NvZmVybiBkZW4gS3VuZGVuYmVudXR6ZXJuIG9kZXIgS3VuZGVuIChGaXJtZW4pIGtlaW5lIFNlcnZpY2VzIGluZGl2aWR1ZWxsIHp1Z2VvcmRuZXQgd2VyZGVuLCBhYmVyIGFsbGUgU2VydmljZXMgZGVuIEt1bmRlbiB6dXIgQXVzd2FobCBhbmdlYm90ZW4gd2VyZGVuLCBrYW5uIGRlciBTY2hyaXR0ZSBhbGxlIFNlcnZpY2VzIGFscyAiU3RhbmRhcmQiLVNlcnZpY2UgdW50ZXIgIkFkbWluIC0+IEt1bmRlbmJlbnV0emVyIDwtPiBTZXJ2aWNlIiAoYnp3LiAiQWRtaW4gLT4gS3VuZGUgPC0+IFNlcnZpY2UiKSBoaWVyIHVtZ2FuZ2VuIHdlcmRlbi4gTmF0w7xybGljaCBpc3QgZXMgaW0gbsOkY2hzdGVuIFNjaHJpdHQgbcO2Z2xpY2gsIGRpZSBTZXJ2aWNlcyB2aWEgQUNMcyBlaW56dXNjaHLDpG5rZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUsIHRoZXJlIGlzIHRoZSBwb3NzaWJpbGl0eSB0byBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZSB0aGUgY29ycmVjdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIGJhY2tncm91bmQgYmFzZWQgb24gdGhlIGR5bmFtaWMgZmllbGQgIklUU01Dcml0aWNhbGl0eSIgYW5kICJJVFNNSW1wYWN0Ii4gUGxlYXNlIGFjdGl2YXRlIHRoZSBvcHRpb24gIlRpY2tldDo6RXZlbnRNb2R1bGVQb3N0IyMjOTcwMC1TZXREeW5hbWljRmllbGRDcml0aWNhbGl0eUZyb21TZXJ2aWNlIiBhbmQgdGhlIG9wdGlvbiAiVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyM5ODAwLVNldFByaW9yaXR5RnJvbUNyaXRpY2FsaXR5QW5kSW1wYWN0TWF0cml4Ii4gSW4gdGhlIG5leHQgc3RlcCwgeW91IGhhdmUgdGhlIHBvc3NpYmlsaXR5IHVzaW5nICJBZG1pbiAtPiBDcml0aWNhbGl0eSDihpQgSW1wYWN0IOKGlCBQcmlvcml0eSIgdG8gc2V0IHRoZSBwcmlvcml0eSB1c2luZyBhIG1hdHJpeC4nfSA9CiAgICAgICAgJ0hpZXIgZ2lidCBlcyBkaWUgTcO2Z2xpY2hrZWl0LCBkaWUga29ycmVrdGUgVGlja2V0LVByaW9yaXTDpHQgYmFzaWVyZW5kIGF1ZiBkZW4gRHluYW1pc2NoZW4gRmVsZGVybiAiSVRTTUNyaXRpY2FsaXR5IiB1bmQgIklUU01JbXBhY3QiIGltIEhpbnRlcmdydW5kIHp1IGJlcmVjaG5lbi4gSGllcmbDvHIgYml0dGUgZGllIEVpbnN0ZWxsdW5nIlRpY2tldDo6RXZlbnRNb2R1bGVQb3N0IyMjOTcwMC1TZXREeW5hbWljRmllbGRDcml0aWNhbGl0eUZyb21TZXJ2aWNlIiB1bmQgZGllIEVpbnN0ZWxsdW5nICJUaWNrZXQ6OkV2ZW50TW9kdWxlUG9zdCMjIzk4MDAtU2V0UHJpb3JpdHlGcm9tQ3JpdGljYWxpdHlBbmRJbXBhY3RNYXRyaXgiIGFrdGl2aWVyZW4uIEltIG7DpGNoc3RlbiBTY2hyaXR0IGdpYnQgZXMgZGllIE3DtmdsaWNoa2VpdCBkaWUgUHJpb3JpdMOkdCBpbiBlaW5lciBNYXRyaXggdW50ZXIgIkFkbWluIC0+IEtyaXRpa2FsaXTDpHQg4oaUIEF1c3dpcmt1bmcg4oaUIFByaW9yaXTDpHQiIHp1IHNldHplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMgdG8gZmFjaWxpdGF0ZSB0aGUgc2VhcmNoIGZvciBzZXJ2aWNlcyB3aXRoaW4gdGhlIHNlcnZpY2UgY2F0YWxvZy4nfSA9CiAgICAgICAgJ1NjaGzDvHNzZWx3w7ZydGVyIHVtIGRpZSBTdWNoZSBuYWNoIFNlcnZpY2VzIGlubmVyaGFsYiBkZXMgU2VydmljZWthdGFsb2dzIHp1IGVybGVpY2h0ZXJuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIGRlc2NyaXB0aW9ucyAoc2hvcnQgJiBsb25nKSBzcGVjaWZpZWQgYnkgVXNlciBMYW5ndWFnZS4nfSA9CiAgICAgICAgJ1NlcnZpY2UtQmVzY2hyZWlidW5nIChrdXJ6IHVuZCBsYW5nKSwgZmVzdGdlbGVndCBkdXJjaCBkaWUgQW53ZW5kZXJzcHJhY2hlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG9ydCBzdW1tYXJ5IG9mIHRoZSBzZXJ2aWNlLCBtYWlubHkgdXNlZCBpbiB0aGUgQ3VzdG9tZXJEYXNoYm9hcmQuJ30gPQogICAgICAgICdLdXJ6YmVzY2hyZWlidW5nIGRlcyBTZXJ2aWNlLCB2b3IgYWxsZW0gdmVyd2VuZGV0IGltIERpYWxvZyBDdXN0b21lckRhc2hib2FyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVzY3JpcHRpb24gb2YgdGhlIHNlcnZpY2UuIFNjcmVlbnNob3RzIGFuZCB0YWJsZXMgYXJlIGFsc28gYWxsb3dlZC4gUGxlYXNlIGVuc3VyZSB0aGUgY29ycmVjdCB3aWR0aCBvZiB0aGUgaW1hZ2UgZm9yIHNjcmVlbnNob3RzLiBUaGlzIGNhbiBiZSBhZGp1c3RlZCBpbiB0aGUgY2tlZGl0b3IgYWZ0ZXIgdXBsb2FkaW5nIHRoZSBzY3JlZW5zaG90LiBBIHdpZHRoIG9mIDYwMHB4IGhhcyBwcm92ZW4gdG8gYmUgdXNlZnVsIG9yIHlvdSBjYW4gY29uZmlndXJlIGEgIm1heC13aWR0aCIgb2YgOTUlIHVuZGVyIEFkdmFuY2VkLid9ID0KICAgICAgICAnQmVzY2hyZWlidW5nIGRlcyBTZXJ2aWNlLiBTY3JlZW5zaG90cyB1bmQgVGFiZWxsZW4gc2luZCBhdWNoIGVybGF1YnQuIEJpdHRlIHNpY2hlcnN0ZWxsZW4sIGRhc3MgZGllIGtvcnJla3RlIEJpbGRicmVpdGUgZsO8ciBTY3JlZW5zaG90cyB2ZXJ3ZW5kZXQgd2lyZC4gIERpZXNlIGthbm4gbmFjaCBkZW0gSG9jaGxhZGVuIGRlcyBTY3JlZW5zaG90cyBpbSBFZGl0b3IgYW5nZXBhc3N0IHdlcmRlbi4gRWluZSBCcmVpdGUgdm9uIDYwMHB4IHd1cmRlIGFscyBzaW5udm9sbCBlcmFjaHRldC4gQWx0ZXJuYXRpdiBrYW5uIHVudGVyICJFcndlaXRlcnQiIGVpbmUgTWF4aW1hbGJyZWl0ZSB2b24gOTUlIGtvbmZpZ3VyaWVydCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBtb3JlIHNlcnZpY2UgY2F0YWxvZyBmaWVsZHMnfSA9ICdXZWl0ZXJlIFNlcnZpY2VrYXRhbG9nLUZlbGRlciBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGFkZGluZyBmdXJ0aGVyIGZpZWxkcyBoZXJlIGluIHRoZSBzZXJ2aWNlIGNhdGFsb2cgYXQgYW55IHRpbWUuIFRvIGRvIHRoaXMsIHBsZWFzZSBnbyB0byAiQWRtaW4gLT4gRHluYW1pY0ZpZWxkcyIgYW5kIGNyZWF0ZSB0aGUgbmV3IGZpZWxkIG9mIHRoZSBvYmplY3QgdHlwZSAiU2VydmljZSIuIFlvdSBjYW4gdGhlbiBhY3RpdmF0ZSB0aGUgZmllbGQgZm9yIHRoZSBjdXN0b21lciBkYXNoYm9hcmQgdW5kZXIgIkFkbWluIC0+IER5bmFtaWNGaWVsZCBTY3JlZW5zIiBieSBhc3NpZ25pbmcgaXQgdW5kZXIgIkN1c3RvbWVyRGFzaGJvYXJkVGlsZSBTZXJ2aWNlQ2F0YWxvZyIuJ30gPQogICAgICAgICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTVNMQVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NMQSBJbmZvcm1hdGlvbid9ID0gJ1NMQS1JbmZvcm1hdGlvbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1p1bGV0enQgZ2XDpG5kZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1p1bGV0enQgZ2XDpG5kZXJ0IHZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NvY2lhdGVkIFNlcnZpY2VzJ30gPSAnWnVnZWjDtnJpZ2UgU2VydmljZXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTVNlcnZpY2Vab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEluZm9ybWF0aW9uJ30gPSAnU2VydmljZS1JbmZvcm1hdGlvbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgaW5jaWRlbnQgc3RhdGUnfSA9ICdBa3R1ZWxsZXIgVm9yZmFsbHN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NvY2lhdGVkIFNMQXMnfSA9ICdadWdlaMO2cmlnZSBTTEFzJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBUaWxlU2VydmljZUNhdGFsb2dDb250YWluZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhIG5ldyB0aWNrZXQgZm9yIHRoaXMgc2VydmljZS4nfSA9ICdOZXVlcyBUaWNrZXQgZsO8ciBkaWVzZW4gU2VydmljZSBoaW56dWbDvGdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlICVzJ30gPSAnJXMgZXJzdGVsbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgJXMgc3ViLXNlcnZpY2UocyknfSA9ICdaZWlnZSAlcyBVbnRlci1TZXJ2aWNlKHMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vcmUgZGV0YWlscyd9ID0gJ1dlaXRlcmUgRGV0YWlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWItU2VydmljZShzKSd9ID0gJ1VudGVyLVNlcnZpY2UocyknOwoKICAgICMgSlMgVGVtcGxhdGU6IFRpbGVTZXJ2aWNlQ2F0YWxvZ0RldGFpbGVkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydzdWItc2VydmljZShzKSBhdmFpbGFibGUnfSA9ICd2ZXJmw7xnYmFyZShyKSBVbnRlcnNlcnZpY2UocyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGEgbmV3IHRpY2tldCBvZiB0eXBlICVzLid9ID0gJ0VpbiBuZXVlcyBUaWNrZXQgdm9tIFR5cCAlcyBlcnN0ZWxsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlIG9uIHRoaXMgdG9waWMnfSA9ICdGQVEtQXJ0aWtlbCB6dSBkaWVzZW0gVGhlbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkaXRpb25hbCBpbmZvcm1hdGlvbid9ID0gJ1p1c8OkdHpsaWNoZSBJbmZvcm1hdGlvbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgaG91cnMnfSA9ICdTZXJ2aWNlLVplaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvXCdjbG9jayd9ID0gJ1Vocic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhZGRpdGlvbmFsIGRhdGEgYXJlIGF2YWlsYWJsZS4nfSA9ICdFcyBzaW5kIGtlaW5lIHdlaXRlcmVuIERhdGVuIHZlcmbDvGdiYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1cnRoZXIgaW5mb3JtYXRpb24nfSA9ICdXZWl0ZXJlIEluZm9ybWF0aW9uZW4nOwoKICAgICMgSlMgVGVtcGxhdGU6IFRpbGVTZXJ2aWNlQ2F0YWxvZ01vZGFsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY2F0YWxvZyd9ID0gJ1N1Y2hrYXRhbG9nJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lclRpbGVTZXJ2aWNlQ2F0YWxvZy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVzY3JpcHRpb24gbm90IGF2YWlsYWJsZS4nfSA9ICdCZXNjaHJlaWJ1bmcgbmljaHQgdmVyZsO8Z2Jhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnQmVuw7Z0aWdlIEZpbGVJRCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTVNlcnZpY2Vab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTZXJ2aWNlSUQgaXMgZ2l2ZW4hJ30gPSAnS2VpbmUgU2VydmljZUlEIHZvcmhhbmRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdTZXJ2aWNlSUQgJXMgbmljaHQgaW4gRGF0ZW5iYW5rIGdlZnVuZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdXYXJudW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnVm9yZmFsbCc7CgogICAgIyBKUyBGaWxlOiBDb3JlLkFnZW50LkFkbWluLlNlcnZpY2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBzZXJ2aWNlIGRlc2NyaXB0aW9uIGxhbmd1YWdlPyd9ID0KICAgICAgICAnU29sbCBkaWVzZSBTcHJhY2hlIGRlciBTZXJ2aWNlLUJlc2NocmVpYnVuZyB3aXJrbGljaCBnZWzDtnNjaHQgd2VyZGVuPyc7CgogICAgIyBKUyBGaWxlOiBDb3JlLkN1c3RvbWVyLlRpbGVTZXJ2aWNlQ2F0YWxvZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBmb3IgJXMnfSA9ICdFcmdlYm5pc3NlIGbDvHIgJXMnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRpdGlvbmFsIHNldHRpbmdzIGZvciB0aGUgc2VydmljZSBjYXRhbG9nLid9ID0gJ1p1c8OkdHpsaWNoZSBFaW5zdGVsbHVuZ2VuIGbDvHIgZGVuIFNlcnZpY2VrYXRhbG9nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZCBjb25maWd1cmF0aW9uIGZvciBTTEEgaW1wb3J0IGFuZCBleHBvcnQgZnVuY3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZCBjb25maWd1cmF0aW9uIGZvciBTZXJ2aWNlIGltcG9ydCBhbmQgZXhwb3J0IGZ1bmN0aW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lclRpbGVTZXJ2aWNlQ2F0YWxvZyBBSkFYIE1vZHVsZS4nfSA9ICdDdXN0b21lclRpbGVTZXJ2aWNlQ2F0YWxvZyBBSkFYIE1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgc2VydmljZSBjYXRhbG9nIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2NoZSBGZWxkZXIsIGRpZSBpbiBkZXIgU2VydmljZWthdGFsb2ctT2JlcmZsw6RjaGUgZGVzIEt1bmRlbmJlcmVpY2hzIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSByZWdpc3RyYXRpb24uIEN1cnJlbnRseSwgdGhlIGNyaXRpY2FsaXR5IG9mIHRoZSBzZXJ2aWNlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgc2VydmljZSwgYnV0IHRoaXMgaGFzIG5vIGVmZmVjdC4gVGhlcmVmb3JlLCB0aGlzIGV2ZW50IG1vZHVsZSBoYXMgYmVlbiBpbXBsZW1lbnRlZCB0aGF0IGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgRHluYW1pY0ZpZWxkIENyaXRpY2FsaXR5IGluIGEgdGlja2V0IGFzIHNvb24gYXMgYSBzZXJ2aWNlIGhhcyBiZWVuIGFzc2lnbmVkLiBQbGVhc2UgYWN0aXZhdGUgdGhlIFN5c0NvbmZpZyBvcHRpb24gU2V0UHJpb3JpdHlGcm9tQ3JpdGljYWxpdHlBbmRJbXBhY3RNYXRyaXggdG8gc2V0IHRoZSBwcmlvcml0eSBpbiB0aGUgbmV4dCBzdGVwIGJhc2VkIGFuIENyaXRpY2FsaXR5IGFuZCBJbXBhY3QuJ30gPQogICAgICAgICdFdmVudC1Nb2R1bHJlZ2lzdHJpZXJ1bmcuIE1vbWVudGFuIGthbm4gZGllIEtyaXRpa2FsaXTDpHQgZGVzIFNlcnZpY2UgYXVjaCBpbSBTZXJ2aWNlIGZlc3RnZWxlZ3Qgd2VyZGVuLCBoYXQgYWxsZXJkaW5ncyBrZWluZSBXaXJrdW5nLiBEYWhlciB3dXJkZSBkaWVzZXMgRXZlbnQtTW9kdWwgaW1wbGVtZW50aWVydCwgZGFzIGF1dG9tYXRpc2NoIGRhcyBEeW5hbWlzY2hlIEZlbGQgS3JpdGlrYWxpdMOkdCBpbiBlaW5lbSBUaWNrZXQgYWt0dWFsaXNpZXJ0LCBzb2JhbGQgZWluIFNlcnZpY2UgenVnZW9yZG5ldCB3dXJkZS4gQml0dGUgZGllIFN5c3RlbWtvbmZpZ3VyYXRpb25zLUVpbnN0ZWxsdW5nICJTZXRQcmlvcml0eUZyb21Dcml0aWNhbGl0eUFuZEltcGFjdE1hdHJpeCIgYWt0aXZpZXJlbiwgdW0gZGllIFByaW9yaXTDpHQgYXVmIEJhc2lzIGRlciBLcml0aWthbGl0w6R0IHVuZCBkaWUgQXVzd2lya3VuZyBpbSBuw6RjaHN0ZW4gU2Nocml0dCB6dSBzZXR6ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSByZWdpc3RyYXRpb24uIEN1cnJlbnRseSwgdGhlIGNyaXRpY2FsaXR5IG9mIHRoZSBzZXJ2aWNlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgc2VydmljZSwgYnV0IHRoaXMgaGFzIG5vIGVmZmVjdC4gVGhlcmVmb3JlLCB0aGlzIGV2ZW50IG1vZHVsZSBoYXMgYmVlbiBpbXBsZW1lbnRlZCB0aGF0IGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgcHJpb3JpdHkgcmVnYXJkaW5nIENyaXRpY2FsaXR5IGFuZCBJbXBhY3QgaW4gYSB0aWNrZXQuJ30gPQogICAgICAgICdFdmVudC1Nb2R1bHJlZ2lzdHJpZXJ1bmcuIE1vbWVudGFuIGthbm4gZGllIEtyaXRpa2FsaXTDpHQgZGVzIFNlcnZpY2UgYXVjaCBpbSBTZXJ2aWNlIGZlc3RnZWxlZ3Qgd2VyZGVuLCBoYXQgYWxsZXJkaW5ncyBrZWluZSBXaXJrdW5nLiBEYWhlciB3dXJkZSBkaWVzZXMgRXZlbnQtTW9kdWwgaW1wbGVtZW50aWVydCwgZGFzIGF1dG9tYXRpc2NoIGRpZSBQcmlvcml0w6R0IHVuZCBkaWUgQXVzd2lya3VuZyBpbiBlaW5lbSBUaWNrZXQgYWt0dWFsaXNpZXJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHNlcnZpY2VzIHdpdGggdGhlIGZvbGxvd2luZyB0aWNrZXQgdHlwZSBsYXN0Lid9ID0gJ1NlcnZpY2VzIG1pdCBkZW0gZm9sZ2VuZGVuIFRpY2tldHR5cGVuIHp1bGV0enQgYW56ZWlnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBGQVEgZmllbGQgdGhhdCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZGVzY3JpcHRpb24gb2YgYW4gRkFRIGFydGljbGUgaW4gdGhlIHNpZGViYXIgKGUuZy4gRmllbGQxLCBGaWVsZDIsIEZpZWxkMy4uLikuJ30gPQogICAgICAgICdEYXMgRkFRLUZlbGQsIHdlbGNoZXMgaW4gZGVyIEJlc2NocmVpYnVuZyBlaW5lcyBGQVEtQXJ0aWtlbCBpbiBkZXIgU2VpdGVubGVpc3RlIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbCAoei5CLiBGaWVsZDEsIEZpZWxkMiwgRmllbGQzLCAuLi4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgQUNMcyBmb3IgZGlmZmVyZW50IGludGVyZmFjZXMgd2hlbiBjcmVhdGluZyBzZXJ2aWNlcy4gU2VydmljZXMgd2lsbCB0aGVuIG9ubHkgYmUgZGlzcGxheWVkIGlmIHRoZSB0aWNrZXQgdHlwZSBzdG9yZWQgaW4gdGhlIHNlcnZpY2UgaGFzIGJlZW4gc2VsZWN0ZWQuIFRoZSAiQWRkQnVsa0FDTCIgY29uc29sZSBzY3JpcHQgY2FuIGFsc28gYmUgdXNlZCB0byBjcmVhdGUgQUNMcyBmb3Igc2VydmljZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBjcmVhdGUuJ30gPQogICAgICAgICdEaWVzZSBPcHRpb24gZXJtw7ZnbGljaHQgZXMsIGRhc3MgYmVpIGRlciBTZXJ2aWNlLUVyc3RlbGx1bmcgYXV0b21hdGlzY2ggQUNMcyBmw7xyIHZlcnNjaGllZGVuZSBPYmVyZmzDpGNoZW4gZ2VuZXJpZXJ0IHdlcmRlbi4gU2VydmljZXMgd2VyZGVuIGRhbm4gbnVyIGFuZ2V6ZWlndCwgc29iYWxkIGRlciBpbSBTZXJ2aWNlIGdlc3BlaWNoZXJ0ZSBUaWNrZXR0eXAgYXVzZ2V3w6RobHQgd3VyZGUuIERhcyBLb25zb2xlbnNrcmlwdCAiQWRkQnVsa0FDTCIga2FubiBhdWNoIGbDvHIgZGllIEFDTC1FcnN0ZWxsdW5nIGbDvHIgZGllIFNlcnZpY2VzIHZlcndlbmRldCB3ZXJkZW4sIGRpZSBiZXJlaXRzIHZvciBkaWVzZXIgQWt0aXZpZXJ1bmcgZXJzdGVsbHQgd3VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG9wdGlvbiBtYWtlcyBpdCBwb3NzaWJsZSB0byBwcmVjb25maWd1cmUgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIEFDTHMuIFRoZSBhaW0gaXMgdG8gb25seSBkaXNwbGF5IHRoZSBzZXJ2aWNlcyB0aGF0IGhhdmUgYWxzbyBiZWVuIGFzc2lnbmVkIHRvIHRoZSBzZXJ2aWNlIGluIHRoZSBzZXJ2aWNlIGNhdGFsb2cuIFRvIHVzZSB0aGlzIGZ1bmN0aW9uLCBwbGVhc2UgZmlyc3QgZW5hYmxlIHRoZSAiU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHMiIG9wdGlvbi4gIkdlbmVyYXRlSW5pdGFsQUNMVG9EaXNhYmxlQWxsU2VydmljZXMiIGdlbmVyYXRlcyBhbiBBQ0wgdGhhdCBpbml0aWFsbHkgaGlkZXMgYWxsIHNlcnZpY2VzLiBUaGUgdmFsdWUgIlBvc3NpYmxlIiBvciAiUG9zc2libGVBZGQiIGNhbiBiZSBzZXQgZm9yIHRoZSBrZXkgIkNvbmZpZ0NoYW5nZSIuIFRoZSAiRGVwbG95TmV3QUNMIiBrZXkgZGVjaWRlcyB3aGV0aGVyIHRoZSBjaGFuZ2VkIEFDTCBzaG91bGQgYWxzbyBiZSBkZXBsb3llZCBpbW1lZGlhdGVseS4gIkFDTFZhbGlkSUQiICgxLCAyLCAzKSBzZXRzIHRoZSBBQ0xzIHRvIHZhbGlkLCBpbnZhbGlkIG9yIHRlbXBvcmFyaWx5IGludmFsaWQuJ30gPQogICAgICAgICdEaWVzZSBPcHRpb24gZXJtw7ZnbGljaHQgZXMsIGRpZSBhdXRvbWF0aXNjaCBnZW5lcmllcnRlbiBBQ0xzIHZvcnp1a29uZmlndXJpZXJlbi4gRGFzIFppZWwgaXN0IGVzLCBudXIgZGllIFNlcnZpY2VzIGVpbnp1YmxlbmRlbiwgZGllIGF1Y2ggaW0gU2VydmljZWthdGFsb2cgenVnZW9yZG5ldCB3dXJkZW4uIFVtIGRpZXNlIEZ1bmt0aW9uIHp1IHZlcndlbmRlbiwgbXVzcyB6dW7DpGNoc3QgZGllIEVpbnN0ZWxsdW5nICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNscyIgYWt0aXZpZXJ0IHdlcmRlbi4gIkdlbmVyYXRlSW5pdGFsQUNMVG9EaXNhYmxlQWxsU2VydmljZXMiIGVyemV1Z3QgZWluZSBBQ0wsIGRpZSBpbml0aWFsIGFsbGUgU2VydmljZXMgYXVzYmxlbmRldC4gRGllIFdlcnRlICJQb3NzaWJsZSIgKGV4a2x1c2l2IGVpbmJsZW5kZW4pIG9kZXIgIlBvc3NpYmxlQWRkIiAoenVzw6R0emxpY2ggZWluYmxlbmRlbikga8O2bm5lbiBmw7xyIGRlbiBTY2hsw7xzc2VsICJDb25maWdDaGFuZ2UiIGVpbmdlc3RlbGx0IHdlcmRlbi4gRGVyIFNjaGzDvHNzZWwgIkRlcGxveU5ld0FDTCIgZW50c2NoZWlkZXQsIG9iIGRpZSBnZcOkbmRlcnRlIEFDTCBzb2ZvcnQgaW4gQmV0cmllYiBnZW5vbW1lbiB3ZXJkZW4gc29sbC4gRGllICJBQ0xWYWxpZElEIiAoMSwgMiwgMykgc2V0enQgZGllIEfDvGx0aWdrZWl0IGRlciBBQ0wgYXVmICJnw7xsdGlnIiwgInVuZ8O8bHRpZyIgb2RlciAidW5nw7xsdGlnIHRlbXBvcsOkciIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ3VzdG9tZXJEYXNoYm9hcmQuIE1vZHVsZSBpcyByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZGl0aW9uYWwgaW5mb3JtYXRpb24nLAogICAgJ0FsbCcsCiAgICAnQ2xvc2UgdGhpcyBkaWFsb2cnLAogICAgJ0NyZWF0ZSAlcycsCiAgICAnQ3JlYXRlIFRpY2tldCcsCiAgICAnQ3JlYXRlIGEgbmV3IHRpY2tldCBmb3IgdGhpcyBzZXJ2aWNlLicsCiAgICAnQ3JlYXRlIGEgbmV3IHRpY2tldCBvZiB0eXBlICVzLicsCiAgICAnRGV0YWlscycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHNlcnZpY2UgZGVzY3JpcHRpb24gbGFuZ3VhZ2U/JywKICAgICdGQVEgYXJ0aWNsZSBvbiB0aGlzIHRvcGljJywKICAgICdGaXJzdCBSZXNwb25zZSBUaW1lJywKICAgICdGdXJ0aGVyIGluZm9ybWF0aW9uJywKICAgICdNb3JlIGRldGFpbHMnLAogICAgJ05vIGFkZGl0aW9uYWwgZGF0YSBhcmUgYXZhaWxhYmxlLicsCiAgICAnT0snLAogICAgJ1Jlc3VsdHMnLAogICAgJ1Jlc3VsdHMgZm9yICVzJywKICAgICdTZWFyY2gnLAogICAgJ1NlYXJjaCBjYXRhbG9nJywKICAgICdTZXJ2aWNlIEluZm9ybWF0aW9uJywKICAgICdTZXJ2aWNlIGhvdXJzJywKICAgICdTaG93ICVzIHN1Yi1zZXJ2aWNlKHMpJywKICAgICdTaG93IGRldGFpbHMgb2YgdGhpcyBzZXJ2aWNlLicsCiAgICAnU2hvdyBvciBoaWRlIHRoZSBjb250ZW50JywKICAgICdTb2x1dGlvbiBUaW1lJywKICAgICdTdWItU2VydmljZShzKScsCiAgICAnaG91cihzKScsCiAgICAnb1wnY2xvY2snLAogICAgJ3N1Yi1zZXJ2aWNlKHMpIGF2YWlsYWJsZScsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/es_ServiceCatalog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX1NlcnZpY2VDYXRhbG9nOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5TTEFJbXBvcnRFeHBvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBleHBvcnQgYSBjb25maWd1cmF0aW9uIGZpbGUgb2YgU0xBcyB0byBpbXBvcnQgdGhlc2Ugb24gYW5vdGhlciBzeXN0ZW0uIFRoZSBjb25maWd1cmF0aW9uIGZpbGUgaXMgZXhwb3J0ZWQgaW4geW1sIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTTEFzIExpc3QnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluU2VydmljZUltcG9ydEV4cG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGV4cG9ydCBhIGNvbmZpZ3VyYXRpb24gZmlsZSBvZiBzZXJ2aWNlcyB0byBpbXBvcnQgdGhlc2Ugb24gYW5vdGhlciBzeXN0ZW0uIFRoZSBjb25maWd1cmF0aW9uIGZpbGUgaXMgZXhwb3J0ZWQgaW4geW1sIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlcyBMaXN0J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBUaWxlU2VydmljZUNhdGFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgZGV0YWlscyBvZiB0aGlzIHNlcnZpY2UuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pblNMQQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIHVwbG9hZCBhIGNvbmZpZ3VyYXRpb24gZmlsZSB0byBpbXBvcnQgU0xBcyB0byB5b3VyIHN5c3RlbS4gVGhlIGZpbGUgbmVlZHMgdG8gYmUgaW4gLnltbCBmb3JtYXQgYXMgZXhwb3J0ZWQgYnkgU0xBIG1hbmFnZW1lbnQgbW9kdWxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NMQXMgSW1wb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NMQXMgRXhwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmltdW0gVGltZSBCZXR3ZWVuIEluY2lkZW50cyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5TZXJ2aWNlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gdXBsb2FkIGEgY29uZmlndXJhdGlvbiBmaWxlIHRvIGltcG9ydCBzZXJ2aWNlcyB0byB5b3VyIHN5c3RlbS4gVGhlIGZpbGUgbmVlZHMgdG8gYmUgaW4gLnltbCBmb3JtYXQgYXMgZXhwb3J0ZWQgYnkgdGhlIHNlcnZpY2UgbWFuYWdlbWVudCBtb2R1bGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZXMgSW1wb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2VzIEV4cG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcml0aWNhbGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIGRlcGVuZHMgb24gdGhlIGZvbGxvd2luZyB0aWNrZXQgdHlwZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGRlc3RpbmF0aW9uIHF1ZXVlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGRlZmF1bHQgc2VydmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgbm90IHByZXNlbnQgb3IgZW5hYmxlZCBvbiB0aGUgc3lzdGVtLiBUaGlzIHNlcnZpY2UgZGVzY3JpcHRpb24gY291bGQgYmUgZGVsZXRlZCBpZiBpdCBpcyBub3QgbmVlZGVkIGFueW1vcmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVtb3ZlIFNlcnZpY2UgRGVzY3JpcHRpb24gTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIG5ldyBzZXJ2aWNlIGRlc2NyaXB0aW9uIGxhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wdGlvbiBSZWZlcmVuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBvcHRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpdGhpbiB0aGUgU2VydmljZUNhdGFsb2d1ZSB0aWxlIGluIHRoZSBjdXN0b21lciBkYXNoYm9hcmQsIGl0IGlzIHBvc3NpYmxlIHRvIHNob3cgdGlja2V0IHR5cGVzIGZvciBwcmVjb25maWd1cmVkIHRpY2tldCBjcmVhdGlvbiBpbnNpZGUgdGhlIHNlcnZpY2UgZGVzY3JpcHRpb24uIEZ1cnRoZXJtb3JlLCBpdCBpcyBwb3NzaWJsZSB0byByZXN0cmljdCB0aGUgc2VydmljZXMgZm9yIG90aGVyIHNjcmVlbnMgdXNpbmcgdGhlIHRpY2tldCB0eXBlcyBzZXQgaGVyZS4gSWYgeW91IHdpc2ggdG8gZG8gdGhpcywgcGxlYXNlIGFjdGl2YXRlIHRoZSBvcHRpb25zICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNscyIgYW5kICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNsczo6T3B0aW9ucyIgaW4gdGhlIE9UT0JPIHN5c3RlbSBjb25maWd1cmF0aW9uLiBUaGUgcmVzdHJpY3Rpb24gaXMgbWFkZSB2aWEgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgQUNMcywgd2hpY2ggY2FuIGJlIHZpZXdlZCB1bmRlciAiQWRtaW4gLT4gQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTCkiLiBJZiBuZWNlc3NhcnksIHBsZWFzZSBhZGp1c3QgdGhlIG9wdGlvbiAiU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHM6Ok9wdGlvbnMiIGFjY29yZGluZyB0byB5b3VyIHJlcXVpcmVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB3ZSB3b3JrIHNlcnZpY2UtYmFzZWQsIHdlIGRvIG5vdCB3YW50IHRvIG9mZmVyIHRoZSBjdXN0b21lciBhIGNob2ljZSBvZiBxdWV1ZXMgaW4gdGhlIGN1c3RvbWVyIHBvcnRhbCB3aGVuIGNyZWF0aW5nIGEgdGlja2V0LCBidXQgZGVjaWRlIG9uIHRoZSBiYXNpcyBvZiB0aGUgc2VydmljZSBpbnRvIHdoaWNoIHF1ZXVlIChvciB3aGljaCB0ZWFtIG9mIGFnZW50cykgdGhlIHRpY2tldCBzaG91bGQgYmUgcHJvY2Vzc2VkIGZpcnN0LiBJbiBvcmRlciB0byB1c2UgdGhpcyBvcHRpb24gc2Vuc2libHksIHBsZWFzZSBkZWFjdGl2YXRlIHRoZSBvcHRpb24gIlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0TWVzc2FnZSMjI1F1ZXVlIiBhbmQgc2V0IGEgc2Vuc2libGUgZGVmYXVsdCBxdWV1ZSBpbiB0aGUgb3B0aW9uICJUaWNrZXQ6OkZyb250ZW5kOjpDdXN0b21lclRpY2tldE1lc3NhZ2UjIyNRdWV1ZURlZmF1bHQiLiBBcyBzb29uIGFzIHlvdSBzZXQgYSAiVGlja2V0IGRlc3RpbmF0aW9uIHF1ZXVlIiBoZXJlIGluIHRoZSBzZXJ2aWNlLCB0aGUgdGlja2V0IHdpbGwgaW1tZWRpYXRlbHkgYmUgY3JlYXRlZCBpbiB0aGlzIHF1ZXVlLiBJZiB0aGUgZmllbGQgcmVtYWlucyBlbXB0eSwgdGhlIGRlZmF1bHQgcXVldWUgY29uZmlndXJlZCBhYm92ZSB3aWxsIGJlIHVzZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgeW91IGRvIG5vdCBhc3NpZ24gc2VydmljZXMgdG8gY3VzdG9tZXJzIG9yIGNvbXBhbmllcyBpbmRpdmlkdWFsbHksIGJ1dCBhbGwgc2VydmljZXMgYXJlIGluaXRpYWxseSBvZmZlcmVkIHRvIHlvdXIgY3VzdG9tZXJzIGZvciBzZWxlY3Rpb24sIHRoZSBzdGVwIG9mIHJlbGVhc2luZyBlYWNoIHNlcnZpY2UgYXMgYSAiZGVmYXVsdCIgc2VydmljZSB1bmRlciAiQWRtaW4gLT4gQ3VzdG9tZXIgdXNlciA8LT4gU2VydmljZSIgKG9yICJDdXN0b21lciA8LT4gU2VydmljZSIpIGNhbiBiZSBieXBhc3NlZCBoZXJlLiBPZiBjb3Vyc2UsIGluIHRoZSBuZXh0IHN0ZXAgaXQgaXMgcG9zc2libGUgdG8gcmVzdHJpY3QgdGhlIHNlcnZpY2VzIHZpYSBBQ0xzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUsIHRoZXJlIGlzIHRoZSBwb3NzaWJpbGl0eSB0byBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZSB0aGUgY29ycmVjdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIGJhY2tncm91bmQgYmFzZWQgb24gdGhlIGR5bmFtaWMgZmllbGQgIklUU01Dcml0aWNhbGl0eSIgYW5kICJJVFNNSW1wYWN0Ii4gUGxlYXNlIGFjdGl2YXRlIHRoZSBvcHRpb24gIlRpY2tldDo6RXZlbnRNb2R1bGVQb3N0IyMjOTcwMC1TZXREeW5hbWljRmllbGRDcml0aWNhbGl0eUZyb21TZXJ2aWNlIiBhbmQgdGhlIG9wdGlvbiAiVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyM5ODAwLVNldFByaW9yaXR5RnJvbUNyaXRpY2FsaXR5QW5kSW1wYWN0TWF0cml4Ii4gSW4gdGhlIG5leHQgc3RlcCwgeW91IGhhdmUgdGhlIHBvc3NpYmlsaXR5IHVzaW5nICJBZG1pbiAtPiBDcml0aWNhbGl0eSDihpQgSW1wYWN0IOKGlCBQcmlvcml0eSIgdG8gc2V0IHRoZSBwcmlvcml0eSB1c2luZyBhIG1hdHJpeC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkcyB0byBmYWNpbGl0YXRlIHRoZSBzZWFyY2ggZm9yIHNlcnZpY2VzIHdpdGhpbiB0aGUgc2VydmljZSBjYXRhbG9nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgZGVzY3JpcHRpb25zIChzaG9ydCAmIGxvbmcpIHNwZWNpZmllZCBieSBVc2VyIExhbmd1YWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3J0IHN1bW1hcnkgb2YgdGhlIHNlcnZpY2UsIG1haW5seSB1c2VkIGluIHRoZSBDdXN0b21lckRhc2hib2FyZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNjcmlwdGlvbiBvZiB0aGUgc2VydmljZS4gU2NyZWVuc2hvdHMgYW5kIHRhYmxlcyBhcmUgYWxzbyBhbGxvd2VkLiBQbGVhc2UgZW5zdXJlIHRoZSBjb3JyZWN0IHdpZHRoIG9mIHRoZSBpbWFnZSBmb3Igc2NyZWVuc2hvdHMuIFRoaXMgY2FuIGJlIGFkanVzdGVkIGluIHRoZSBja2VkaXRvciBhZnRlciB1cGxvYWRpbmcgdGhlIHNjcmVlbnNob3QuIEEgd2lkdGggb2YgNjAwcHggaGFzIHByb3ZlbiB0byBiZSB1c2VmdWwgb3IgeW91IGNhbiBjb25maWd1cmUgYSAibWF4LXdpZHRoIiBvZiA5NSUgdW5kZXIgQWR2YW5jZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIG1vcmUgc2VydmljZSBjYXRhbG9nIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGFkZGluZyBmdXJ0aGVyIGZpZWxkcyBoZXJlIGluIHRoZSBzZXJ2aWNlIGNhdGFsb2cgYXQgYW55IHRpbWUuIFRvIGRvIHRoaXMsIHBsZWFzZSBnbyB0byAiQWRtaW4gLT4gRHluYW1pY0ZpZWxkcyIgYW5kIGNyZWF0ZSB0aGUgbmV3IGZpZWxkIG9mIHRoZSBvYmplY3QgdHlwZSAiU2VydmljZSIuIFlvdSBjYW4gdGhlbiBhY3RpdmF0ZSB0aGUgZmllbGQgZm9yIHRoZSBjdXN0b21lciBkYXNoYm9hcmQgdW5kZXIgIkFkbWluIC0+IER5bmFtaWNGaWVsZCBTY3JlZW5zIiBieSBhc3NpZ25pbmcgaXQgdW5kZXIgIkN1c3RvbWVyRGFzaGJvYXJkVGlsZSBTZXJ2aWNlQ2F0YWxvZyIuJ30gPQogICAgICAgICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTVNMQVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NMQSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc29jaWF0ZWQgU2VydmljZXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTVNlcnZpY2Vab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgaW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzb2NpYXRlZCBTTEFzJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBUaWxlU2VydmljZUNhdGFsb2dDb250YWluZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhIG5ldyB0aWNrZXQgZm9yIHRoaXMgc2VydmljZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgJXMgc3ViLXNlcnZpY2UocyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9yZSBkZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1Yi1TZXJ2aWNlKHMpJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBUaWxlU2VydmljZUNhdGFsb2dEZXRhaWxlZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnc3ViLXNlcnZpY2UocykgYXZhaWxhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhIG5ldyB0aWNrZXQgb2YgdHlwZSAlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGUgb24gdGhpcyB0b3BpYyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRpdGlvbmFsIGluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgaG91cnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb1wnY2xvY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWRkaXRpb25hbCBkYXRhIGFyZSBhdmFpbGFibGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1cnRoZXIgaW5mb3JtYXRpb24nfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IFRpbGVTZXJ2aWNlQ2F0YWxvZ01vZGFsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY2F0YWxvZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJUaWxlU2VydmljZUNhdGFsb2cucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2NyaXB0aW9uIG5vdCBhdmFpbGFibGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNU2VydmljZVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFNlcnZpY2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBDb3JlLkFnZW50LkFkbWluLlNlcnZpY2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBzZXJ2aWNlIGRlc2NyaXB0aW9uIGxhbmd1YWdlPyd9ID0KICAgICAgICAnJzsKCiAgICAjIEpTIEZpbGU6IENvcmUuQ3VzdG9tZXIuVGlsZVNlcnZpY2VDYXRhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHRzIGZvciAlcyd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZGl0aW9uYWwgc2V0dGluZ3MgZm9yIHRoZSBzZXJ2aWNlIGNhdGFsb2cuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkIGNvbmZpZ3VyYXRpb24gZm9yIFNMQSBpbXBvcnQgYW5kIGV4cG9ydCBmdW5jdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkIGNvbmZpZ3VyYXRpb24gZm9yIFNlcnZpY2UgaW1wb3J0IGFuZCBleHBvcnQgZnVuY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyVGlsZVNlcnZpY2VDYXRhbG9nIEFKQVggTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgc2VydmljZSBjYXRhbG9nIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSByZWdpc3RyYXRpb24uIEN1cnJlbnRseSwgdGhlIGNyaXRpY2FsaXR5IG9mIHRoZSBzZXJ2aWNlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgc2VydmljZSwgYnV0IHRoaXMgaGFzIG5vIGVmZmVjdC4gVGhlcmVmb3JlLCB0aGlzIGV2ZW50IG1vZHVsZSBoYXMgYmVlbiBpbXBsZW1lbnRlZCB0aGF0IGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgRHluYW1pY0ZpZWxkIENyaXRpY2FsaXR5IGluIGEgdGlja2V0IGFzIHNvb24gYXMgYSBzZXJ2aWNlIGhhcyBiZWVuIGFzc2lnbmVkLiBQbGVhc2UgYWN0aXZhdGUgdGhlIFN5c0NvbmZpZyBvcHRpb24gU2V0UHJpb3JpdHlGcm9tQ3JpdGljYWxpdHlBbmRJbXBhY3RNYXRyaXggdG8gc2V0IHRoZSBwcmlvcml0eSBpbiB0aGUgbmV4dCBzdGVwIGJhc2VkIGFuIENyaXRpY2FsaXR5IGFuZCBJbXBhY3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHJlZ2lzdHJhdGlvbi4gQ3VycmVudGx5LCB0aGUgY3JpdGljYWxpdHkgb2YgdGhlIHNlcnZpY2UgY2FuIGFsc28gYmUgc2V0IGluIHRoZSBzZXJ2aWNlLCBidXQgdGhpcyBoYXMgbm8gZWZmZWN0LiBUaGVyZWZvcmUsIHRoaXMgZXZlbnQgbW9kdWxlIGhhcyBiZWVuIGltcGxlbWVudGVkIHRoYXQgYXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwcmlvcml0eSByZWdhcmRpbmcgQ3JpdGljYWxpdHkgYW5kIEltcGFjdCBpbiBhIHRpY2tldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHNlcnZpY2VzIHdpdGggdGhlIGZvbGxvd2luZyB0aWNrZXQgdHlwZSBsYXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgRkFRIGZpZWxkIHRoYXQgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGRlc2NyaXB0aW9uIG9mIGFuIEZBUSBhcnRpY2xlIGluIHRoZSBzaWRlYmFyIChlLmcuIEZpZWxkMSwgRmllbGQyLCBGaWVsZDMuLi4pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgb3B0aW9uIGFsbG93cyB5b3UgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBBQ0xzIGZvciBkaWZmZXJlbnQgaW50ZXJmYWNlcyB3aGVuIGNyZWF0aW5nIHNlcnZpY2VzLiBTZXJ2aWNlcyB3aWxsIHRoZW4gb25seSBiZSBkaXNwbGF5ZWQgaWYgdGhlIHRpY2tldCB0eXBlIHN0b3JlZCBpbiB0aGUgc2VydmljZSBoYXMgYmVlbiBzZWxlY3RlZC4gVGhlICJBZGRCdWxrQUNMIiBjb25zb2xlIHNjcmlwdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGNyZWF0ZSBBQ0xzIGZvciBzZXJ2aWNlcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGNyZWF0ZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG9wdGlvbiBtYWtlcyBpdCBwb3NzaWJsZSB0byBwcmVjb25maWd1cmUgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIEFDTHMuIFRoZSBhaW0gaXMgdG8gb25seSBkaXNwbGF5IHRoZSBzZXJ2aWNlcyB0aGF0IGhhdmUgYWxzbyBiZWVuIGFzc2lnbmVkIHRvIHRoZSBzZXJ2aWNlIGluIHRoZSBzZXJ2aWNlIGNhdGFsb2cuIFRvIHVzZSB0aGlzIGZ1bmN0aW9uLCBwbGVhc2UgZmlyc3QgZW5hYmxlIHRoZSAiU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHMiIG9wdGlvbi4gIkdlbmVyYXRlSW5pdGFsQUNMVG9EaXNhYmxlQWxsU2VydmljZXMiIGdlbmVyYXRlcyBhbiBBQ0wgdGhhdCBpbml0aWFsbHkgaGlkZXMgYWxsIHNlcnZpY2VzLiBUaGUgdmFsdWUgIlBvc3NpYmxlIiBvciAiUG9zc2libGVBZGQiIGNhbiBiZSBzZXQgZm9yIHRoZSBrZXkgIkNvbmZpZ0NoYW5nZSIuIFRoZSAiRGVwbG95TmV3QUNMIiBrZXkgZGVjaWRlcyB3aGV0aGVyIHRoZSBjaGFuZ2VkIEFDTCBzaG91bGQgYWxzbyBiZSBkZXBsb3llZCBpbW1lZGlhdGVseS4gIkFDTFZhbGlkSUQiICgxLCAyLCAzKSBzZXRzIHRoZSBBQ0xzIHRvIHZhbGlkLCBpbnZhbGlkIG9yIHRlbXBvcmFyaWx5IGludmFsaWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDdXN0b21lckRhc2hib2FyZC4gTW9kdWxlIGlzIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkaXRpb25hbCBpbmZvcm1hdGlvbicsCiAgICAnQWxsJywKICAgICdDbG9zZSB0aGlzIGRpYWxvZycsCiAgICAnQ3JlYXRlICVzJywKICAgICdDcmVhdGUgVGlja2V0JywKICAgICdDcmVhdGUgYSBuZXcgdGlja2V0IGZvciB0aGlzIHNlcnZpY2UuJywKICAgICdDcmVhdGUgYSBuZXcgdGlja2V0IG9mIHR5cGUgJXMuJywKICAgICdEZXRhaWxzJywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgc2VydmljZSBkZXNjcmlwdGlvbiBsYW5ndWFnZT8nLAogICAgJ0ZBUSBhcnRpY2xlIG9uIHRoaXMgdG9waWMnLAogICAgJ0ZpcnN0IFJlc3BvbnNlIFRpbWUnLAogICAgJ0Z1cnRoZXIgaW5mb3JtYXRpb24nLAogICAgJ01vcmUgZGV0YWlscycsCiAgICAnTm8gYWRkaXRpb25hbCBkYXRhIGFyZSBhdmFpbGFibGUuJywKICAgICdPSycsCiAgICAnUmVzdWx0cycsCiAgICAnUmVzdWx0cyBmb3IgJXMnLAogICAgJ1NlYXJjaCcsCiAgICAnU2VhcmNoIGNhdGFsb2cnLAogICAgJ1NlcnZpY2UgSW5mb3JtYXRpb24nLAogICAgJ1NlcnZpY2UgaG91cnMnLAogICAgJ1Nob3cgJXMgc3ViLXNlcnZpY2UocyknLAogICAgJ1Nob3cgZGV0YWlscyBvZiB0aGlzIHNlcnZpY2UuJywKICAgICdTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQnLAogICAgJ1NvbHV0aW9uIFRpbWUnLAogICAgJ1N1Yi1TZXJ2aWNlKHMpJywKICAgICdob3VyKHMpJywKICAgICdvXCdjbG9jaycsCiAgICAnc3ViLXNlcnZpY2UocykgYXZhaWxhYmxlJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/es_CO_ServiceCatalog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX0NPX1NlcnZpY2VDYXRhbG9nOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5TTEFJbXBvcnRFeHBvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBleHBvcnQgYSBjb25maWd1cmF0aW9uIGZpbGUgb2YgU0xBcyB0byBpbXBvcnQgdGhlc2Ugb24gYW5vdGhlciBzeXN0ZW0uIFRoZSBjb25maWd1cmF0aW9uIGZpbGUgaXMgZXhwb3J0ZWQgaW4geW1sIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTTEFzIExpc3QnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluU2VydmljZUltcG9ydEV4cG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGV4cG9ydCBhIGNvbmZpZ3VyYXRpb24gZmlsZSBvZiBzZXJ2aWNlcyB0byBpbXBvcnQgdGhlc2Ugb24gYW5vdGhlciBzeXN0ZW0uIFRoZSBjb25maWd1cmF0aW9uIGZpbGUgaXMgZXhwb3J0ZWQgaW4geW1sIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlcyBMaXN0J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBUaWxlU2VydmljZUNhdGFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgZGV0YWlscyBvZiB0aGlzIHNlcnZpY2UuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pblNMQQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIHVwbG9hZCBhIGNvbmZpZ3VyYXRpb24gZmlsZSB0byBpbXBvcnQgU0xBcyB0byB5b3VyIHN5c3RlbS4gVGhlIGZpbGUgbmVlZHMgdG8gYmUgaW4gLnltbCBmb3JtYXQgYXMgZXhwb3J0ZWQgYnkgU0xBIG1hbmFnZW1lbnQgbW9kdWxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NMQXMgSW1wb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NMQXMgRXhwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmltdW0gVGltZSBCZXR3ZWVuIEluY2lkZW50cyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5TZXJ2aWNlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gdXBsb2FkIGEgY29uZmlndXJhdGlvbiBmaWxlIHRvIGltcG9ydCBzZXJ2aWNlcyB0byB5b3VyIHN5c3RlbS4gVGhlIGZpbGUgbmVlZHMgdG8gYmUgaW4gLnltbCBmb3JtYXQgYXMgZXhwb3J0ZWQgYnkgdGhlIHNlcnZpY2UgbWFuYWdlbWVudCBtb2R1bGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZXMgSW1wb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2VzIEV4cG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcml0aWNhbGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIGRlcGVuZHMgb24gdGhlIGZvbGxvd2luZyB0aWNrZXQgdHlwZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGRlc3RpbmF0aW9uIHF1ZXVlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGRlZmF1bHQgc2VydmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgbm90IHByZXNlbnQgb3IgZW5hYmxlZCBvbiB0aGUgc3lzdGVtLiBUaGlzIHNlcnZpY2UgZGVzY3JpcHRpb24gY291bGQgYmUgZGVsZXRlZCBpZiBpdCBpcyBub3QgbmVlZGVkIGFueW1vcmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVtb3ZlIFNlcnZpY2UgRGVzY3JpcHRpb24gTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIG5ldyBzZXJ2aWNlIGRlc2NyaXB0aW9uIGxhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wdGlvbiBSZWZlcmVuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBvcHRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpdGhpbiB0aGUgU2VydmljZUNhdGFsb2d1ZSB0aWxlIGluIHRoZSBjdXN0b21lciBkYXNoYm9hcmQsIGl0IGlzIHBvc3NpYmxlIHRvIHNob3cgdGlja2V0IHR5cGVzIGZvciBwcmVjb25maWd1cmVkIHRpY2tldCBjcmVhdGlvbiBpbnNpZGUgdGhlIHNlcnZpY2UgZGVzY3JpcHRpb24uIEZ1cnRoZXJtb3JlLCBpdCBpcyBwb3NzaWJsZSB0byByZXN0cmljdCB0aGUgc2VydmljZXMgZm9yIG90aGVyIHNjcmVlbnMgdXNpbmcgdGhlIHRpY2tldCB0eXBlcyBzZXQgaGVyZS4gSWYgeW91IHdpc2ggdG8gZG8gdGhpcywgcGxlYXNlIGFjdGl2YXRlIHRoZSBvcHRpb25zICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNscyIgYW5kICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNsczo6T3B0aW9ucyIgaW4gdGhlIE9UT0JPIHN5c3RlbSBjb25maWd1cmF0aW9uLiBUaGUgcmVzdHJpY3Rpb24gaXMgbWFkZSB2aWEgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgQUNMcywgd2hpY2ggY2FuIGJlIHZpZXdlZCB1bmRlciAiQWRtaW4gLT4gQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTCkiLiBJZiBuZWNlc3NhcnksIHBsZWFzZSBhZGp1c3QgdGhlIG9wdGlvbiAiU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHM6Ok9wdGlvbnMiIGFjY29yZGluZyB0byB5b3VyIHJlcXVpcmVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB3ZSB3b3JrIHNlcnZpY2UtYmFzZWQsIHdlIGRvIG5vdCB3YW50IHRvIG9mZmVyIHRoZSBjdXN0b21lciBhIGNob2ljZSBvZiBxdWV1ZXMgaW4gdGhlIGN1c3RvbWVyIHBvcnRhbCB3aGVuIGNyZWF0aW5nIGEgdGlja2V0LCBidXQgZGVjaWRlIG9uIHRoZSBiYXNpcyBvZiB0aGUgc2VydmljZSBpbnRvIHdoaWNoIHF1ZXVlIChvciB3aGljaCB0ZWFtIG9mIGFnZW50cykgdGhlIHRpY2tldCBzaG91bGQgYmUgcHJvY2Vzc2VkIGZpcnN0LiBJbiBvcmRlciB0byB1c2UgdGhpcyBvcHRpb24gc2Vuc2libHksIHBsZWFzZSBkZWFjdGl2YXRlIHRoZSBvcHRpb24gIlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0TWVzc2FnZSMjI1F1ZXVlIiBhbmQgc2V0IGEgc2Vuc2libGUgZGVmYXVsdCBxdWV1ZSBpbiB0aGUgb3B0aW9uICJUaWNrZXQ6OkZyb250ZW5kOjpDdXN0b21lclRpY2tldE1lc3NhZ2UjIyNRdWV1ZURlZmF1bHQiLiBBcyBzb29uIGFzIHlvdSBzZXQgYSAiVGlja2V0IGRlc3RpbmF0aW9uIHF1ZXVlIiBoZXJlIGluIHRoZSBzZXJ2aWNlLCB0aGUgdGlja2V0IHdpbGwgaW1tZWRpYXRlbHkgYmUgY3JlYXRlZCBpbiB0aGlzIHF1ZXVlLiBJZiB0aGUgZmllbGQgcmVtYWlucyBlbXB0eSwgdGhlIGRlZmF1bHQgcXVldWUgY29uZmlndXJlZCBhYm92ZSB3aWxsIGJlIHVzZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgeW91IGRvIG5vdCBhc3NpZ24gc2VydmljZXMgdG8gY3VzdG9tZXJzIG9yIGNvbXBhbmllcyBpbmRpdmlkdWFsbHksIGJ1dCBhbGwgc2VydmljZXMgYXJlIGluaXRpYWxseSBvZmZlcmVkIHRvIHlvdXIgY3VzdG9tZXJzIGZvciBzZWxlY3Rpb24sIHRoZSBzdGVwIG9mIHJlbGVhc2luZyBlYWNoIHNlcnZpY2UgYXMgYSAiZGVmYXVsdCIgc2VydmljZSB1bmRlciAiQWRtaW4gLT4gQ3VzdG9tZXIgdXNlciA8LT4gU2VydmljZSIgKG9yICJDdXN0b21lciA8LT4gU2VydmljZSIpIGNhbiBiZSBieXBhc3NlZCBoZXJlLiBPZiBjb3Vyc2UsIGluIHRoZSBuZXh0IHN0ZXAgaXQgaXMgcG9zc2libGUgdG8gcmVzdHJpY3QgdGhlIHNlcnZpY2VzIHZpYSBBQ0xzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUsIHRoZXJlIGlzIHRoZSBwb3NzaWJpbGl0eSB0byBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZSB0aGUgY29ycmVjdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIGJhY2tncm91bmQgYmFzZWQgb24gdGhlIGR5bmFtaWMgZmllbGQgIklUU01Dcml0aWNhbGl0eSIgYW5kICJJVFNNSW1wYWN0Ii4gUGxlYXNlIGFjdGl2YXRlIHRoZSBvcHRpb24gIlRpY2tldDo6RXZlbnRNb2R1bGVQb3N0IyMjOTcwMC1TZXREeW5hbWljRmllbGRDcml0aWNhbGl0eUZyb21TZXJ2aWNlIiBhbmQgdGhlIG9wdGlvbiAiVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyM5ODAwLVNldFByaW9yaXR5RnJvbUNyaXRpY2FsaXR5QW5kSW1wYWN0TWF0cml4Ii4gSW4gdGhlIG5leHQgc3RlcCwgeW91IGhhdmUgdGhlIHBvc3NpYmlsaXR5IHVzaW5nICJBZG1pbiAtPiBDcml0aWNhbGl0eSDihpQgSW1wYWN0IOKGlCBQcmlvcml0eSIgdG8gc2V0IHRoZSBwcmlvcml0eSB1c2luZyBhIG1hdHJpeC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkcyB0byBmYWNpbGl0YXRlIHRoZSBzZWFyY2ggZm9yIHNlcnZpY2VzIHdpdGhpbiB0aGUgc2VydmljZSBjYXRhbG9nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgZGVzY3JpcHRpb25zIChzaG9ydCAmIGxvbmcpIHNwZWNpZmllZCBieSBVc2VyIExhbmd1YWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3J0IHN1bW1hcnkgb2YgdGhlIHNlcnZpY2UsIG1haW5seSB1c2VkIGluIHRoZSBDdXN0b21lckRhc2hib2FyZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNjcmlwdGlvbiBvZiB0aGUgc2VydmljZS4gU2NyZWVuc2hvdHMgYW5kIHRhYmxlcyBhcmUgYWxzbyBhbGxvd2VkLiBQbGVhc2UgZW5zdXJlIHRoZSBjb3JyZWN0IHdpZHRoIG9mIHRoZSBpbWFnZSBmb3Igc2NyZWVuc2hvdHMuIFRoaXMgY2FuIGJlIGFkanVzdGVkIGluIHRoZSBja2VkaXRvciBhZnRlciB1cGxvYWRpbmcgdGhlIHNjcmVlbnNob3QuIEEgd2lkdGggb2YgNjAwcHggaGFzIHByb3ZlbiB0byBiZSB1c2VmdWwgb3IgeW91IGNhbiBjb25maWd1cmUgYSAibWF4LXdpZHRoIiBvZiA5NSUgdW5kZXIgQWR2YW5jZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIG1vcmUgc2VydmljZSBjYXRhbG9nIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGFkZGluZyBmdXJ0aGVyIGZpZWxkcyBoZXJlIGluIHRoZSBzZXJ2aWNlIGNhdGFsb2cgYXQgYW55IHRpbWUuIFRvIGRvIHRoaXMsIHBsZWFzZSBnbyB0byAiQWRtaW4gLT4gRHluYW1pY0ZpZWxkcyIgYW5kIGNyZWF0ZSB0aGUgbmV3IGZpZWxkIG9mIHRoZSBvYmplY3QgdHlwZSAiU2VydmljZSIuIFlvdSBjYW4gdGhlbiBhY3RpdmF0ZSB0aGUgZmllbGQgZm9yIHRoZSBjdXN0b21lciBkYXNoYm9hcmQgdW5kZXIgIkFkbWluIC0+IER5bmFtaWNGaWVsZCBTY3JlZW5zIiBieSBhc3NpZ25pbmcgaXQgdW5kZXIgIkN1c3RvbWVyRGFzaGJvYXJkVGlsZSBTZXJ2aWNlQ2F0YWxvZyIuJ30gPQogICAgICAgICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTVNMQVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NMQSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc29jaWF0ZWQgU2VydmljZXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTVNlcnZpY2Vab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgaW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzb2NpYXRlZCBTTEFzJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBUaWxlU2VydmljZUNhdGFsb2dDb250YWluZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhIG5ldyB0aWNrZXQgZm9yIHRoaXMgc2VydmljZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgJXMgc3ViLXNlcnZpY2UocyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9yZSBkZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1Yi1TZXJ2aWNlKHMpJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBUaWxlU2VydmljZUNhdGFsb2dEZXRhaWxlZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnc3ViLXNlcnZpY2UocykgYXZhaWxhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhIG5ldyB0aWNrZXQgb2YgdHlwZSAlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGUgb24gdGhpcyB0b3BpYyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRpdGlvbmFsIGluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgaG91cnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb1wnY2xvY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWRkaXRpb25hbCBkYXRhIGFyZSBhdmFpbGFibGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1cnRoZXIgaW5mb3JtYXRpb24nfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IFRpbGVTZXJ2aWNlQ2F0YWxvZ01vZGFsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY2F0YWxvZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJUaWxlU2VydmljZUNhdGFsb2cucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2NyaXB0aW9uIG5vdCBhdmFpbGFibGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNU2VydmljZVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFNlcnZpY2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBDb3JlLkFnZW50LkFkbWluLlNlcnZpY2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBzZXJ2aWNlIGRlc2NyaXB0aW9uIGxhbmd1YWdlPyd9ID0KICAgICAgICAnJzsKCiAgICAjIEpTIEZpbGU6IENvcmUuQ3VzdG9tZXIuVGlsZVNlcnZpY2VDYXRhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHRzIGZvciAlcyd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZGl0aW9uYWwgc2V0dGluZ3MgZm9yIHRoZSBzZXJ2aWNlIGNhdGFsb2cuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkIGNvbmZpZ3VyYXRpb24gZm9yIFNMQSBpbXBvcnQgYW5kIGV4cG9ydCBmdW5jdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkIGNvbmZpZ3VyYXRpb24gZm9yIFNlcnZpY2UgaW1wb3J0IGFuZCBleHBvcnQgZnVuY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyVGlsZVNlcnZpY2VDYXRhbG9nIEFKQVggTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgc2VydmljZSBjYXRhbG9nIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSByZWdpc3RyYXRpb24uIEN1cnJlbnRseSwgdGhlIGNyaXRpY2FsaXR5IG9mIHRoZSBzZXJ2aWNlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgc2VydmljZSwgYnV0IHRoaXMgaGFzIG5vIGVmZmVjdC4gVGhlcmVmb3JlLCB0aGlzIGV2ZW50IG1vZHVsZSBoYXMgYmVlbiBpbXBsZW1lbnRlZCB0aGF0IGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgRHluYW1pY0ZpZWxkIENyaXRpY2FsaXR5IGluIGEgdGlja2V0IGFzIHNvb24gYXMgYSBzZXJ2aWNlIGhhcyBiZWVuIGFzc2lnbmVkLiBQbGVhc2UgYWN0aXZhdGUgdGhlIFN5c0NvbmZpZyBvcHRpb24gU2V0UHJpb3JpdHlGcm9tQ3JpdGljYWxpdHlBbmRJbXBhY3RNYXRyaXggdG8gc2V0IHRoZSBwcmlvcml0eSBpbiB0aGUgbmV4dCBzdGVwIGJhc2VkIGFuIENyaXRpY2FsaXR5IGFuZCBJbXBhY3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHJlZ2lzdHJhdGlvbi4gQ3VycmVudGx5LCB0aGUgY3JpdGljYWxpdHkgb2YgdGhlIHNlcnZpY2UgY2FuIGFsc28gYmUgc2V0IGluIHRoZSBzZXJ2aWNlLCBidXQgdGhpcyBoYXMgbm8gZWZmZWN0LiBUaGVyZWZvcmUsIHRoaXMgZXZlbnQgbW9kdWxlIGhhcyBiZWVuIGltcGxlbWVudGVkIHRoYXQgYXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwcmlvcml0eSByZWdhcmRpbmcgQ3JpdGljYWxpdHkgYW5kIEltcGFjdCBpbiBhIHRpY2tldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHNlcnZpY2VzIHdpdGggdGhlIGZvbGxvd2luZyB0aWNrZXQgdHlwZSBsYXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgRkFRIGZpZWxkIHRoYXQgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGRlc2NyaXB0aW9uIG9mIGFuIEZBUSBhcnRpY2xlIGluIHRoZSBzaWRlYmFyIChlLmcuIEZpZWxkMSwgRmllbGQyLCBGaWVsZDMuLi4pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgb3B0aW9uIGFsbG93cyB5b3UgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBBQ0xzIGZvciBkaWZmZXJlbnQgaW50ZXJmYWNlcyB3aGVuIGNyZWF0aW5nIHNlcnZpY2VzLiBTZXJ2aWNlcyB3aWxsIHRoZW4gb25seSBiZSBkaXNwbGF5ZWQgaWYgdGhlIHRpY2tldCB0eXBlIHN0b3JlZCBpbiB0aGUgc2VydmljZSBoYXMgYmVlbiBzZWxlY3RlZC4gVGhlICJBZGRCdWxrQUNMIiBjb25zb2xlIHNjcmlwdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGNyZWF0ZSBBQ0xzIGZvciBzZXJ2aWNlcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGNyZWF0ZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG9wdGlvbiBtYWtlcyBpdCBwb3NzaWJsZSB0byBwcmVjb25maWd1cmUgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIEFDTHMuIFRoZSBhaW0gaXMgdG8gb25seSBkaXNwbGF5IHRoZSBzZXJ2aWNlcyB0aGF0IGhhdmUgYWxzbyBiZWVuIGFzc2lnbmVkIHRvIHRoZSBzZXJ2aWNlIGluIHRoZSBzZXJ2aWNlIGNhdGFsb2cuIFRvIHVzZSB0aGlzIGZ1bmN0aW9uLCBwbGVhc2UgZmlyc3QgZW5hYmxlIHRoZSAiU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHMiIG9wdGlvbi4gIkdlbmVyYXRlSW5pdGFsQUNMVG9EaXNhYmxlQWxsU2VydmljZXMiIGdlbmVyYXRlcyBhbiBBQ0wgdGhhdCBpbml0aWFsbHkgaGlkZXMgYWxsIHNlcnZpY2VzLiBUaGUgdmFsdWUgIlBvc3NpYmxlIiBvciAiUG9zc2libGVBZGQiIGNhbiBiZSBzZXQgZm9yIHRoZSBrZXkgIkNvbmZpZ0NoYW5nZSIuIFRoZSAiRGVwbG95TmV3QUNMIiBrZXkgZGVjaWRlcyB3aGV0aGVyIHRoZSBjaGFuZ2VkIEFDTCBzaG91bGQgYWxzbyBiZSBkZXBsb3llZCBpbW1lZGlhdGVseS4gIkFDTFZhbGlkSUQiICgxLCAyLCAzKSBzZXRzIHRoZSBBQ0xzIHRvIHZhbGlkLCBpbnZhbGlkIG9yIHRlbXBvcmFyaWx5IGludmFsaWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDdXN0b21lckRhc2hib2FyZC4gTW9kdWxlIGlzIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkaXRpb25hbCBpbmZvcm1hdGlvbicsCiAgICAnQWxsJywKICAgICdDbG9zZSB0aGlzIGRpYWxvZycsCiAgICAnQ3JlYXRlICVzJywKICAgICdDcmVhdGUgVGlja2V0JywKICAgICdDcmVhdGUgYSBuZXcgdGlja2V0IGZvciB0aGlzIHNlcnZpY2UuJywKICAgICdDcmVhdGUgYSBuZXcgdGlja2V0IG9mIHR5cGUgJXMuJywKICAgICdEZXRhaWxzJywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgc2VydmljZSBkZXNjcmlwdGlvbiBsYW5ndWFnZT8nLAogICAgJ0ZBUSBhcnRpY2xlIG9uIHRoaXMgdG9waWMnLAogICAgJ0ZpcnN0IFJlc3BvbnNlIFRpbWUnLAogICAgJ0Z1cnRoZXIgaW5mb3JtYXRpb24nLAogICAgJ01vcmUgZGV0YWlscycsCiAgICAnTm8gYWRkaXRpb25hbCBkYXRhIGFyZSBhdmFpbGFibGUuJywKICAgICdPSycsCiAgICAnUmVzdWx0cycsCiAgICAnUmVzdWx0cyBmb3IgJXMnLAogICAgJ1NlYXJjaCcsCiAgICAnU2VhcmNoIGNhdGFsb2cnLAogICAgJ1NlcnZpY2UgSW5mb3JtYXRpb24nLAogICAgJ1NlcnZpY2UgaG91cnMnLAogICAgJ1Nob3cgJXMgc3ViLXNlcnZpY2UocyknLAogICAgJ1Nob3cgZGV0YWlscyBvZiB0aGlzIHNlcnZpY2UuJywKICAgICdTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQnLAogICAgJ1NvbHV0aW9uIFRpbWUnLAogICAgJ1N1Yi1TZXJ2aWNlKHMpJywKICAgICdob3VyKHMpJywKICAgICdvXCdjbG9jaycsCiAgICAnc3ViLXNlcnZpY2UocykgYXZhaWxhYmxlJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/hu_ServiceCatalog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omh1X1NlcnZpY2VDYXRhbG9nOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5TTEFJbXBvcnRFeHBvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBleHBvcnQgYSBjb25maWd1cmF0aW9uIGZpbGUgb2YgU0xBcyB0byBpbXBvcnQgdGhlc2Ugb24gYW5vdGhlciBzeXN0ZW0uIFRoZSBjb25maWd1cmF0aW9uIGZpbGUgaXMgZXhwb3J0ZWQgaW4geW1sIGZvcm1hdC4nfSA9CiAgICAgICAgJ0l0dCBleHBvcnTDoWxoYXRqYSBheiBTTEEtayBiZcOhbGzDrXTDs2bDoWpsasOhdCwgaG9neSBhem9rYXQgZWd5IG3DoXNpayByZW5kc3plcmJlIGltcG9ydMOhbGhhc3NhLiBBIGJlw6FsbMOtdMOzZsOhamwgWUFNTCBmb3Jtw6F0dW1iYW4ga2Vyw7xsIGV4cG9ydMOhbMOhc3JhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTTEFzIExpc3QnfSA9ICdTTEEtayBsaXN0w6FqYSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5TZXJ2aWNlSW1wb3J0RXhwb3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gZXhwb3J0IGEgY29uZmlndXJhdGlvbiBmaWxlIG9mIHNlcnZpY2VzIHRvIGltcG9ydCB0aGVzZSBvbiBhbm90aGVyIHN5c3RlbS4gVGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBleHBvcnRlZCBpbiB5bWwgZm9ybWF0Lid9ID0KICAgICAgICAnSXR0IGV4cG9ydMOhbGhhdGphIGEgc3pvbGfDoWx0YXTDoXNvayBiZcOhbGzDrXTDs2bDoWpsasOhdCwgaG9neSBhem9rYXQgZWd5IG3DoXNpayByZW5kc3plcmJlIGltcG9ydMOhbGhhc3NhLiBBIGJlw6FsbMOtdMOzZsOhamwgWUFNTCBmb3Jtw6F0dW1iYW4ga2Vyw7xsIGV4cG9ydMOhbMOhc3JhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlcyBMaXN0J30gPSAnU3pvbGfDoWx0YXTDoXNvayBsaXN0w6FqYSc7CgogICAgIyBUZW1wbGF0ZTogVGlsZVNlcnZpY2VDYXRhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGRldGFpbHMgb2YgdGhpcyBzZXJ2aWNlLid9ID0gJ0Egc3pvbGfDoWx0YXTDoXMgcsOpc3psZXRlaW5layBtZWdqZWxlbsOtdMOpc2UuJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pblNMQQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIHVwbG9hZCBhIGNvbmZpZ3VyYXRpb24gZmlsZSB0byBpbXBvcnQgU0xBcyB0byB5b3VyIHN5c3RlbS4gVGhlIGZpbGUgbmVlZHMgdG8gYmUgaW4gLnltbCBmb3JtYXQgYXMgZXhwb3J0ZWQgYnkgU0xBIG1hbmFnZW1lbnQgbW9kdWxlLid9ID0KICAgICAgICAnSXR0IHTDtmx0aGV0IGZlbCBlZ3kgYmXDoWxsw610w7Nmw6FqbHQgYXogU0xBLWsgaW1wb3J0w6Fsw6Fzw6Fob3ogYSByZW5kc3plcnJlLiBBIGbDoWpsbmFrIC55bWwgZm9ybcOhdHVtYmFuIGtlbGwgbGVubmllLCBhaG9neSBheiBTTEEta2V6ZWzFkSBtb2R1bCBleHBvcnTDoWx0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0xBcyBJbXBvcnQnfSA9ICdTTEEtayBpbXBvcnTDoWzDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NMQXMgRXhwb3J0J30gPSAnU0xBLWsgZXhwb3J0w6Fsw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pbXVtIFRpbWUgQmV0d2VlbiBJbmNpZGVudHMnfSA9ICdBeiBpbmNpZGVuc2VrIGvDtnp0aSBsZWdraXNlYmIgaWTFkSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5TZXJ2aWNlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gdXBsb2FkIGEgY29uZmlndXJhdGlvbiBmaWxlIHRvIGltcG9ydCBzZXJ2aWNlcyB0byB5b3VyIHN5c3RlbS4gVGhlIGZpbGUgbmVlZHMgdG8gYmUgaW4gLnltbCBmb3JtYXQgYXMgZXhwb3J0ZWQgYnkgdGhlIHNlcnZpY2UgbWFuYWdlbWVudCBtb2R1bGUuJ30gPQogICAgICAgICdJdHQgdMO2bHRoZXQgZmVsIGVneSBiZcOhbGzDrXTDs2bDoWpsdCBhIHN6b2xnw6FsdGF0w6Fzb2sgaW1wb3J0w6Fsw6Fzw6Fob3ogYSByZW5kc3plcnJlLiBBIGbDoWpsbmFrIC55bWwgZm9ybcOhdHVtYmFuIGtlbGwgbGVubmllLCBhaG9neSBhIHN6b2xnw6FsdGF0w6Fza2V6ZWzFkSBtb2R1bCBleHBvcnTDoWx0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZXMgSW1wb3J0J30gPSAnU3pvbGfDoWx0YXTDoXNvayBpbXBvcnTDoWzDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2VzIEV4cG9ydCd9ID0gJ1N6b2xnw6FsdGF0w6Fzb2sgZXhwb3J0w6Fsw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcml0aWNhbGl0eSd9ID0gJ0tyaXRpa3Vzc8OhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIGRlcGVuZHMgb24gdGhlIGZvbGxvd2luZyB0aWNrZXQgdHlwZXMnfSA9ICdBIHN6b2xnw6FsdGF0w6FzIGEga8O2dmV0a2V6xZEgamVneXTDrXB1c29rdMOzbCBmw7xnZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZGVzdGluYXRpb24gcXVldWUnfSA9ICdKZWd5IGPDqWx2w6Fyw7NsaXN0w6FqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBkZWZhdWx0IHNlcnZpY2UnfSA9ICfDnGd5ZsOpbCBhbGFww6lydGVsbWV6ZXR0IHN6b2xnw6FsdGF0w6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ0t1bGNzc3phdmFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgRGVzY3JpcHRpb24nfSA9ICdTem9sZ8OhbHRhdMOhcyBsZcOtcsOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyBub3QgcHJlc2VudCBvciBlbmFibGVkIG9uIHRoZSBzeXN0ZW0uIFRoaXMgc2VydmljZSBkZXNjcmlwdGlvbiBjb3VsZCBiZSBkZWxldGVkIGlmIGl0IGlzIG5vdCBuZWVkZWQgYW55bW9yZS4nfSA9CiAgICAgICAgJ0V6IGEgbnllbHYgbmluY3MgamVsZW4gdmFneSBuaW5jcyBlbmdlZMOpbHllenZlIGEgcmVuZHN6ZXJlbi4gRXogYSBzem9sZ8OhbHRhdMOhc2xlw61yw6FzIHTDtnLDtmxoZXTFkSwgaGEgdMO2YmLDqSBuaW5jcyByw6Egc3rDvGtzw6lnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZW1vdmUgU2VydmljZSBEZXNjcmlwdGlvbiBMYW5ndWFnZSd9ID0gJ1N6b2xnw6FsdGF0w6FzbGXDrXLDoXMtbnllbHYgZWx0w6F2b2zDrXTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBuZXcgc2VydmljZSBkZXNjcmlwdGlvbiBsYW5ndWFnZSd9ID0gJ8OaaiBzem9sZ8OhbHRhdMOhc2xlw61yw6FzLW55ZWx2IGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcHRpb24gUmVmZXJlbmNlJ30gPSAnQmXDoWxsw610w6Fzb2sgaGl2YXRrb3rDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyd9ID0gJ0Ega8O2dmV0a2V6xZEgYmXDoWxsw610w6Fzb2thdCBoYXN6bsOhbGhhdGphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpdGhpbiB0aGUgU2VydmljZUNhdGFsb2d1ZSB0aWxlIGluIHRoZSBjdXN0b21lciBkYXNoYm9hcmQsIGl0IGlzIHBvc3NpYmxlIHRvIHNob3cgdGlja2V0IHR5cGVzIGZvciBwcmVjb25maWd1cmVkIHRpY2tldCBjcmVhdGlvbiBpbnNpZGUgdGhlIHNlcnZpY2UgZGVzY3JpcHRpb24uIEZ1cnRoZXJtb3JlLCBpdCBpcyBwb3NzaWJsZSB0byByZXN0cmljdCB0aGUgc2VydmljZXMgZm9yIG90aGVyIHNjcmVlbnMgdXNpbmcgdGhlIHRpY2tldCB0eXBlcyBzZXQgaGVyZS4gSWYgeW91IHdpc2ggdG8gZG8gdGhpcywgcGxlYXNlIGFjdGl2YXRlIHRoZSBvcHRpb25zICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNscyIgYW5kICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNsczo6T3B0aW9ucyIgaW4gdGhlIE9UT0JPIHN5c3RlbSBjb25maWd1cmF0aW9uLiBUaGUgcmVzdHJpY3Rpb24gaXMgbWFkZSB2aWEgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgQUNMcywgd2hpY2ggY2FuIGJlIHZpZXdlZCB1bmRlciAiQWRtaW4gLT4gQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTCkiLiBJZiBuZWNlc3NhcnksIHBsZWFzZSBhZGp1c3QgdGhlIG9wdGlvbiAiU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHM6Ok9wdGlvbnMiIGFjY29yZGluZyB0byB5b3VyIHJlcXVpcmVtZW50cy4nfSA9CiAgICAgICAgJ0F6IMO8Z3lmw6lsIHZlesOpcmzFkXB1bHRqw6FuIGzDqXbFkSDigJ5TZXJ2aWNlQ2F0YWxvZ3Vl4oCdIGNzZW1ww6luIGJlbMO8bCBsZWhldMWRc8OpZyB2YW4gbWVnamVsZW7DrXRlbmkgYSBqZWd5dMOtcHVzb2thdCBheiBlbMWRcmUgYmXDoWxsw610b3R0IGplZ3lsw6l0cmVob3rDoXPDoWhveiBhIHN6b2xnw6FsdGF0w6FzIGxlw61yw6Fzw6FuIGJlbMO8bC4gRXplbmZlbMO8bCBsZWhldMWRc8OpZyB2YW4gYSBzem9sZ8OhbHRhdMOhc29rIGtvcmzDoXRvesOhc8OhcmEgbcOhcyBrw6lwZXJuecWRa27DqWwgYXogaXR0IGJlw6FsbMOtdG90dCBqZWd5dMOtcHVzb2sgaGFzem7DoWxhdMOhdmFsLiBIYSBlenQgc3plcmV0bsOpIG1lZ3Rlbm5pLCBha2tvciBha3RpdsOhbGphIGEg4oCeU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHPigJ0gw6lzIGEg4oCeU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHM6Ok9wdGlvbnPigJ0gYmXDoWxsw610w6Fzb2thdCBheiBPVE9CTyByZW5kc3plcmJlw6FsbMOtdMOhc2FpYmFuLiBBIGtvcmzDoXRvesOhcyBhdXRvbWF0aWt1c2FuIGVsxZHDoWxsw610b3R0IEFDTC1la2VuIGtlcmVzenTDvGwgdMO2cnTDqW5paywgYW1lbHllayBheiDigJ5BZG1pbmlzenRyw6FjacOzIOKGkiBIb3p6w6Fmw6lyw6lzLXZlesOpcmzDqXNpIGxpc3TDoWsgKEFDTCnigJ0gYWxhdHQgdGVraW50aGV0xZFrIG1lZy4gSGEgc3rDvGtzw6lnZXMsIGFra29yIMOhbGzDrXRzYSBiZSBhIOKAnlNlcnZpY2VDYXRhbG9nOjpDcmVhdGVUeXBlU2VydmljZVJlbGF0ZWRBY2xzOjpPcHRpb25z4oCdIGJlw6FsbMOtdMOhc3QgYXogaWfDqW55ZWluZWsgbWVnZmVsZWzFkWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB3ZSB3b3JrIHNlcnZpY2UtYmFzZWQsIHdlIGRvIG5vdCB3YW50IHRvIG9mZmVyIHRoZSBjdXN0b21lciBhIGNob2ljZSBvZiBxdWV1ZXMgaW4gdGhlIGN1c3RvbWVyIHBvcnRhbCB3aGVuIGNyZWF0aW5nIGEgdGlja2V0LCBidXQgZGVjaWRlIG9uIHRoZSBiYXNpcyBvZiB0aGUgc2VydmljZSBpbnRvIHdoaWNoIHF1ZXVlIChvciB3aGljaCB0ZWFtIG9mIGFnZW50cykgdGhlIHRpY2tldCBzaG91bGQgYmUgcHJvY2Vzc2VkIGZpcnN0LiBJbiBvcmRlciB0byB1c2UgdGhpcyBvcHRpb24gc2Vuc2libHksIHBsZWFzZSBkZWFjdGl2YXRlIHRoZSBvcHRpb24gIlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0TWVzc2FnZSMjI1F1ZXVlIiBhbmQgc2V0IGEgc2Vuc2libGUgZGVmYXVsdCBxdWV1ZSBpbiB0aGUgb3B0aW9uICJUaWNrZXQ6OkZyb250ZW5kOjpDdXN0b21lclRpY2tldE1lc3NhZ2UjIyNRdWV1ZURlZmF1bHQiLiBBcyBzb29uIGFzIHlvdSBzZXQgYSAiVGlja2V0IGRlc3RpbmF0aW9uIHF1ZXVlIiBoZXJlIGluIHRoZSBzZXJ2aWNlLCB0aGUgdGlja2V0IHdpbGwgaW1tZWRpYXRlbHkgYmUgY3JlYXRlZCBpbiB0aGlzIHF1ZXVlLiBJZiB0aGUgZmllbGQgcmVtYWlucyBlbXB0eSwgdGhlIGRlZmF1bHQgcXVldWUgY29uZmlndXJlZCBhYm92ZSB3aWxsIGJlIHVzZWQuJ30gPQogICAgICAgICdIYSBzem9sZ8OhbHRhdMOhc2FsYXDDuiByZW5kc3plcmJlbiBkb2xnb3p1bmssIGFra29yIG5lbSBzemVyZXRuw6luayBmZWxhasOhbmxhbmkgYXogw7xneWbDqWxuZWsgYSB2w6Fyw7NsaXN0w6FrIGvDtnrDtnR0aSB2w6FsYXN6dMOhc3QgYXogw7xneWbDqWxwb3J0w6Fsb24gYSBqZWd5IGzDqXRyZWhvesOhc2Frb3IsIGhhbmVtIGEgc3pvbGfDoWx0YXTDoXMgYWxhcGrDoW4gc3plcmV0bsOpbmsgZWxkw7ZudGVuaSwgaG9neSBtZWx5aWsgdsOhcsOzbGlzdMOhYmEgKHZhZ3kgbWVseWlrIMO8Z3lpbnTDqXrFkWkgY3NhcGF0bmFrKSBrZWxsIGVsc8WRa8OpbnQgZmVsZG9sZ296bmkgYSBqZWd5ZXQuIEFoaG96LCBob2d5IGV6dCBhIGxlaGV0xZFzw6lnZXQgw6lzenN6ZXLFsWVuIGxlaGVzc2VuIGhhc3puw6FsbmksIGthcGNzb2xqYSBraSBhIOKAnlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0TWVzc2FnZSMjI1F1ZXVl4oCdIGJlw6FsbMOtdMOhc3QsIMOpcyDDoWxsw610c29uIGJlIMOpc3pzemVyxbEgYWxhcMOpcnRlbG1lemV0dCB2w6Fyw7NsaXN0w6F0IGEg4oCeVGlja2V0OjpGcm9udGVuZDo6Q3VzdG9tZXJUaWNrZXRNZXNzYWdlIyMjUXVldWVEZWZhdWx04oCdIGJlw6FsbMOtdMOhc2Jhbi4gQW1pbnQgaXR0IGEgc3pvbGfDoWx0YXTDoXNiYW4gYmXDoWxsw610IGVneSDigJ5KZWd5IGPDqWx2w6Fyw7NsaXN0w6FqYeKAnSDDqXJ0w6lrZXQsIGEgamVneSBhem9ubmFsIGViYmVuIGEgdsOhcsOzbGlzdMOhYmFuIGxlc3ogbMOpdHJlaG96dmEuIEhhIGEgbWV6xZEgw7xyZXMgbWFyYWQsIGFra29yIGEgZmVudCBiZcOhbGzDrXRvdHQgYWxhcMOpcnRlbG1lemV0dCB2w6Fyw7NsaXN0YSBsZXN6IGhhc3puw6FsdmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHlvdSBkbyBub3QgYXNzaWduIHNlcnZpY2VzIHRvIGN1c3RvbWVycyBvciBjb21wYW5pZXMgaW5kaXZpZHVhbGx5LCBidXQgYWxsIHNlcnZpY2VzIGFyZSBpbml0aWFsbHkgb2ZmZXJlZCB0byB5b3VyIGN1c3RvbWVycyBmb3Igc2VsZWN0aW9uLCB0aGUgc3RlcCBvZiByZWxlYXNpbmcgZWFjaCBzZXJ2aWNlIGFzIGEgImRlZmF1bHQiIHNlcnZpY2UgdW5kZXIgIkFkbWluIC0+IEN1c3RvbWVyIHVzZXIgPC0+IFNlcnZpY2UiIChvciAiQ3VzdG9tZXIgPC0+IFNlcnZpY2UiKSBjYW4gYmUgYnlwYXNzZWQgaGVyZS4gT2YgY291cnNlLCBpbiB0aGUgbmV4dCBzdGVwIGl0IGlzIHBvc3NpYmxlIHRvIHJlc3RyaWN0IHRoZSBzZXJ2aWNlcyB2aWEgQUNMcy4nfSA9CiAgICAgICAgJ0hhIG5lbSByZW5kZWwgaG96esOhIGVneWVua8OpbnQgc3pvbGfDoWx0YXTDoXNva2F0IGF6IMO8Z3lmZWxla2hleiB2YWd5IGEgdsOhbGxhbGF0b2tob3osIGhhbmVtIGF6IMO2c3N6ZXMgc3pvbGfDoWx0YXTDoXN0IGVsZXZlIGZlbGFqw6FubGphIGF6IMO8Z3lmZWxlaW5layB2w6FsYXN6dMOhc3JhLCBha2tvciBheiDigJ5BZG1pbmlzenRyw6FjacOzIOKGkiDDnGd5ZsOpbC1mZWxoYXN6bsOhbMOzIOKGlCBTem9sZ8OhbHRhdMOhc+KAnSAodmFneSDigJ7DnGd5ZsOpbCDihpQgU3pvbGfDoWx0YXTDoXPigJ0pIGFsYXR0IGF6IGVneWVzIHN6b2zDoWx0YXTDoXNvayDigJ5hbGFww6lydGVsbWV6ZXR04oCdIHN6b2xnw6FsdGF0w6Fza8OpbnQgdMO2cnTDqW7FkSBraWFkw6Fzw6FuYWsgbMOpcMOpc2UgaXR0IG1lZ2tlcsO8bGhldMWRLiBUZXJtw6lzemV0ZXNlbiBhIGvDtnZldGtlesWRIGzDqXDDqXNiZW4gbGVoZXTFkXPDqWcgdmFuIGEgc3pvbGfDoWx0YXTDoXNvayBBQ0wtZWtlbiBrZXJlc3p0w7xsIHTDtnJ0w6luxZEga29ybMOhdG96w6Fzw6FyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSwgdGhlcmUgaXMgdGhlIHBvc3NpYmlsaXR5IHRvIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHRpY2tldCBwcmlvcml0eSBpbiB0aGUgYmFja2dyb3VuZCBiYXNlZCBvbiB0aGUgZHluYW1pYyBmaWVsZCAiSVRTTUNyaXRpY2FsaXR5IiBhbmQgIklUU01JbXBhY3QiLiBQbGVhc2UgYWN0aXZhdGUgdGhlIG9wdGlvbiAiVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyM5NzAwLVNldER5bmFtaWNGaWVsZENyaXRpY2FsaXR5RnJvbVNlcnZpY2UiIGFuZCB0aGUgb3B0aW9uICJUaWNrZXQ6OkV2ZW50TW9kdWxlUG9zdCMjIzk4MDAtU2V0UHJpb3JpdHlGcm9tQ3JpdGljYWxpdHlBbmRJbXBhY3RNYXRyaXgiLiBJbiB0aGUgbmV4dCBzdGVwLCB5b3UgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdXNpbmcgIkFkbWluIC0+IENyaXRpY2FsaXR5IOKGlCBJbXBhY3Qg4oaUIFByaW9yaXR5IiB0byBzZXQgdGhlIHByaW9yaXR5IHVzaW5nIGEgbWF0cml4Lid9ID0KICAgICAgICAnSXR0IGxlaGV0xZFzw6lnIHZhbiBhcnJhLCBob2d5IGF1dG9tYXRpa3VzYW4ga2lzesOhbcOtdHNhIGEgbWVnZmVsZWzFkSBqZWd5cHJpb3JpdMOhc3QgYSBow6F0dMOpcmJlbiBheiDigJ5JVFNNQ3JpdGljYWxpdHnigJ0gw6lzIOKAnklUU01JbXBhY3TigJ0gZGluYW1pa3VzIG1lesWRayBhbGFwasOhbi4gQWt0aXbDoWxqYSBhIOKAnlRpY2tldDo6RXZlbnRNb2R1bGVQb3N0IyMjOTcwMC1TZXREeW5hbWljRmllbGRDcml0aWNhbGl0eUZyb21TZXJ2aWNl4oCdIMOpcyBhIOKAnlRpY2tldDo6RXZlbnRNb2R1bGVQb3N0IyMjOTgwMC1TZXRQcmlvcml0eUZyb21Dcml0aWNhbGl0eUFuZEltcGFjdE1hdHJpeOKAnSBiZcOhbGzDrXTDoXNva2F0LiBBIGvDtnZldGtlesWRIGzDqXDDqXNiZW4gbGVoZXTFkXPDqWdlIHZhbiBheiDigJ5BZG1pbmlzenRyw6FjacOzIOKGkiBLcml0aWt1c3PDoWcg4oaUIEhhdMOhcyDihpQgUHJpb3JpdMOhc+KAnSBoYXN6bsOhbGF0w6F2YWwgZWd5IG3DoXRyaXggc2Vnw610c8OpZ8OpdmVsIGJlw6FsbMOtdGFuaSBhIHByaW9yaXTDoXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkcyB0byBmYWNpbGl0YXRlIHRoZSBzZWFyY2ggZm9yIHNlcnZpY2VzIHdpdGhpbiB0aGUgc2VydmljZSBjYXRhbG9nLid9ID0KICAgICAgICAnS3VsY3NzemF2YWsgYSBzem9sZ8OhbHRhdMOhc29rIGtlcmVzw6lzw6luZWsgbWVna8O2bm55w610w6lzw6loZXogYSBzem9sZ8OhbHRhdMOhc2thdGFsw7NndXNvbiBiZWzDvGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgZGVzY3JpcHRpb25zIChzaG9ydCAmIGxvbmcpIHNwZWNpZmllZCBieSBVc2VyIExhbmd1YWdlLid9ID0KICAgICAgICAnQSBmZWxoYXN6bsOhbMOzIG55ZWx2ZSDDoWx0YWwgbWVnYWRvdHQgc3pvbGfDoWx0YXTDoXNsZcOtcsOhc29rIChyw7Z2aWQgw6lzIGhvc3N6w7opLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG9ydCBzdW1tYXJ5IG9mIHRoZSBzZXJ2aWNlLCBtYWlubHkgdXNlZCBpbiB0aGUgQ3VzdG9tZXJEYXNoYm9hcmQuJ30gPQogICAgICAgICdBIHN6b2xnw6FsdGF0w6FzIHLDtnZpZCDDtnNzemVmb2dsYWzDoXNhLCBhbWVseSBlbHPFkXNvcmJhbiBheiDDvGd5ZsOpbCB2ZXrDqXJsxZFwdWx0asOhbiB2YW4gaGFzem7DoWx2YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVzY3JpcHRpb24gb2YgdGhlIHNlcnZpY2UuIFNjcmVlbnNob3RzIGFuZCB0YWJsZXMgYXJlIGFsc28gYWxsb3dlZC4gUGxlYXNlIGVuc3VyZSB0aGUgY29ycmVjdCB3aWR0aCBvZiB0aGUgaW1hZ2UgZm9yIHNjcmVlbnNob3RzLiBUaGlzIGNhbiBiZSBhZGp1c3RlZCBpbiB0aGUgY2tlZGl0b3IgYWZ0ZXIgdXBsb2FkaW5nIHRoZSBzY3JlZW5zaG90LiBBIHdpZHRoIG9mIDYwMHB4IGhhcyBwcm92ZW4gdG8gYmUgdXNlZnVsIG9yIHlvdSBjYW4gY29uZmlndXJlIGEgIm1heC13aWR0aCIgb2YgOTUlIHVuZGVyIEFkdmFuY2VkLid9ID0KICAgICAgICAnQSBzem9sZ8OhbHRhdMOhcyBsZcOtcsOhc2EuIEvDqXBlcm55xZFrw6lwZWsgw6lzIHTDoWJsw6F6YXRvayBpcyBtZWdlbmdlZGV0dGVrLiBHecWResWRZGrDtm4gbWVnIGFycsOzbCwgaG9neSBhIGvDqXBlayBzesOpbGVzc8OpZ2UgbWVnZmVsZWzFkSBsZWd5ZW4gYSBrw6lwZXJuecWRa8OpcGVrbsOpbC4gRXogYSBDS0VkaXRvciBzemVya2VzenTFkWJlbiDDoWxsw610aGF0w7MgYmUgYSBrw6lwZXJuecWRa8OpcCBmZWx0w7ZsdMOpc2UgdXTDoW4uIEEgNjAwIGvDqXBwb250b3Mgc3rDqWxlc3PDqWcgasOzbCBiZXbDoWx0LCB2YWd5IGJlw6FsbMOtdGhhdGphIGEg4oCebWF4LXdpZHRo4oCdIMOpcnTDqWtldCA5NSUtcmEgYSDigJ5TcGVjacOhbGlz4oCdIG1lbsO8cG9udCBhbGF0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIG1vcmUgc2VydmljZSBjYXRhbG9nIGZpZWxkcyd9ID0gJ1RvdsOhYmJpIHN6b2xnw6FsdGF0w6Fza2F0YWzDs2d1cyBtZXrFkWsgaG96esOhYWTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIHRoZSBvcHRpb24gb2YgYWRkaW5nIGZ1cnRoZXIgZmllbGRzIGhlcmUgaW4gdGhlIHNlcnZpY2UgY2F0YWxvZyBhdCBhbnkgdGltZS4gVG8gZG8gdGhpcywgcGxlYXNlIGdvIHRvICJBZG1pbiAtPiBEeW5hbWljRmllbGRzIiBhbmQgY3JlYXRlIHRoZSBuZXcgZmllbGQgb2YgdGhlIG9iamVjdCB0eXBlICJTZXJ2aWNlIi4gWW91IGNhbiB0aGVuIGFjdGl2YXRlIHRoZSBmaWVsZCBmb3IgdGhlIGN1c3RvbWVyIGRhc2hib2FyZCB1bmRlciAiQWRtaW4gLT4gRHluYW1pY0ZpZWxkIFNjcmVlbnMiIGJ5IGFzc2lnbmluZyBpdCB1bmRlciAiQ3VzdG9tZXJEYXNoYm9hcmRUaWxlIFNlcnZpY2VDYXRhbG9nIi4nfSA9CiAgICAgICAgJ0xlaGV0xZFzw6lnZSB2YW4gdG92w6FiYmkgbWV6xZFrZXQgaG96esOhYWRuaWEgYsOhcm1pa29yIGl0dCwgYSBzem9sZ8OhbHRhdMOhc2thdGFsw7NndXNiYW4uIEVoaGV6IG1lbmplbiBheiDigJ5BZG1pbmlzenRyw6FjacOzIOKGkiBEaW5hbWlrdXMgbWV6xZFr4oCdIG1vZHVsaG96LCDDqXMgaG96emEgbMOpdHJlIGEg4oCeU3pvbGfDoWx0YXTDoXPigJ0gb2JqZWt0dW10w61wdXPDuiDDumogbWV6xZF0LiBFenV0w6FuIGFrdGl2w6FsaGF0amEgYSBtZXrFkXQgYXogw7xneWbDqWwgdmV6w6lybMWRcHVsdGrDoWhveiBheiDigJ5BZG1pbmlzenRyw6FjacOzIOKGkiBEaW5hbWlrdXMgbWV6xZFrIGvDqXBlcm55xZFp4oCdIGFsYXR0IGF6w6FsdGFsLCBob2d5IGhvenrDoXJlbmRlbGkgYSBtZXrFkXQgYSDigJ5DdXN0b21lckRhc2hib2FyZFRpbGUgU2VydmljZUNhdGFsb2figJ0gYWxhdHQuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01TTEFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTTEEgSW5mb3JtYXRpb24nfSA9ICdTTEEgaW5mb3Jtw6FjacOzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdVdG9sasOhcmEgbcOzZG9zw610dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnVXRvbGrDoXJhIG3Ds2Rvc8OtdG90dGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzb2NpYXRlZCBTZXJ2aWNlcyd9ID0gJ0hvenrDoXJlbmRlbHQgc3pvbGfDoWx0YXTDoXNvayc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNU2VydmljZVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgSW5mb3JtYXRpb24nfSA9ICdTem9sZ8OhbHRhdMOhc2luZm9ybcOhY2nDs2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBpbmNpZGVudCBzdGF0ZSd9ID0gJ0plbGVubGVnaSBpbmNpZGVuc8OhbGxhcG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc29jaWF0ZWQgU0xBcyd9ID0gJ0hvenrDoXJlbmRlbHQgU0xBLWsnOwoKICAgICMgSlMgVGVtcGxhdGU6IFRpbGVTZXJ2aWNlQ2F0YWxvZ0NvbnRhaW5lcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGEgbmV3IHRpY2tldCBmb3IgdGhpcyBzZXJ2aWNlLid9ID0gJ8OaaiBqZWd5IGzDqXRyZWhvesOhc2EgZWhoZXogYSBzem9sZ8OhbHRhdMOhc2hvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlICVzJ30gPSAnJXMgbMOpdHJlaG96w6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICVzIHN1Yi1zZXJ2aWNlKHMpJ30gPSAnJXMgYWxzem9sZ8OhbHRhdMOhc2FpbmFrIG1lZ2plbGVuw610w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3JlIGRldGFpbHMnfSA9ICdUb3bDoWJiaSByw6lzemxldGVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1Yi1TZXJ2aWNlKHMpJ30gPSAnQWxzem9sZ8OhbHRhdMOhc29rJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBUaWxlU2VydmljZUNhdGFsb2dEZXRhaWxlZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnc3ViLXNlcnZpY2UocykgYXZhaWxhYmxlJ30gPSAnYWxzem9sZ8OhbHRhdMOhcyDDqXJoZXTFkSBlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYSBuZXcgdGlja2V0IG9mIHR5cGUgJXMuJ30gPSAnw5pqICVzIHTDrXB1c8O6IGplZ3kgbMOpdHJlaG96w6FzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGUgb24gdGhpcyB0b3BpYyd9ID0gJ0d5SUsgYmVqZWd5esOpcyBlYmJlbiBhIHTDqW3DoWJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRpdGlvbmFsIGluZm9ybWF0aW9uJ30gPSAnVG92w6FiYmkgaW5mb3Jtw6FjacOzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIGhvdXJzJ30gPSAnU3pvbGfDoWx0YXTDoXNpIGlkxZEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb1wnY2xvY2snfSA9ICfDs3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFkZGl0aW9uYWwgZGF0YSBhcmUgYXZhaWxhYmxlLid9ID0gJ05lbSDDqXJoZXTFkWsgZWwgdG92w6FiYmkgYWRhdG9rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdXJ0aGVyIGluZm9ybWF0aW9uJ30gPSAnVG92w6FiYmkgaW5mb3Jtw6FjacOzayc7CgogICAgIyBKUyBUZW1wbGF0ZTogVGlsZVNlcnZpY2VDYXRhbG9nTW9kYWwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjYXRhbG9nJ30gPSAnS2F0YWzDs2d1cyBrZXJlc8Opc2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyVGlsZVNlcnZpY2VDYXRhbG9nLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNjcmlwdGlvbiBub3QgYXZhaWxhYmxlLid9ID0gJ0xlw61yw6FzIG5lbSDDqXJoZXTFkSBlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnRsOhamxhem9ub3PDrXTDsyBzesO8a3PDqWdlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTVNlcnZpY2Vab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTZXJ2aWNlSUQgaXMgZ2l2ZW4hJ30gPSAnTmluY3Mgc3pvbGfDoWx0YXTDoXNhem9ub3PDrXTDsyBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0EoeikgJXMgc3pvbGfDoWx0YXTDoXNhem9ub3PDrXTDsyBuZW0gdGFsw6FsaGF0w7MgYXogYWRhdGLDoXppc2JhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfDvHplbWvDqXBlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnZmlneWVsbWV6dGV0w6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnMnOwoKICAgICMgSlMgRmlsZTogQ29yZS5BZ2VudC5BZG1pbi5TZXJ2aWNlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgc2VydmljZSBkZXNjcmlwdGlvbiBsYW5ndWFnZT8nfSA9CiAgICAgICAgJ1ZhbMOzYmFuIHTDtnLDtmxuaSBzemVyZXRuw6kgZXp0IGEgc3pvbGfDoWx0YXTDoXNsZcOtcsOhcy1ueWVsdmV0Pyc7CgogICAgIyBKUyBGaWxlOiBDb3JlLkN1c3RvbWVyLlRpbGVTZXJ2aWNlQ2F0YWxvZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBmb3IgJXMnfSA9ICdUYWzDoWxhdG9rIGVycmU6ICVzJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkaXRpb25hbCBzZXR0aW5ncyBmb3IgdGhlIHNlcnZpY2UgY2F0YWxvZy4nfSA9ICdUb3bDoWJiaSBiZcOhbGzDrXTDoXNvayBhIHN6b2xnw6FsdGF0w6Fza2F0YWzDs2d1c2hvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXV0b2xvYWQgY29uZmlndXJhdGlvbiBmb3IgU0xBIGltcG9ydCBhbmQgZXhwb3J0IGZ1bmN0aW9ucy4nfSA9ICdBdXRvbWF0aWt1cyBiZXTDtmx0w6lzaSBiZcOhbGzDrXTDoXMgYXogU0xBIGltcG9ydMOhbMOhc2Egw6lzIGV4cG9ydMOhbMOhc2EgZnVua2Npw7NraG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZCBjb25maWd1cmF0aW9uIGZvciBTZXJ2aWNlIGltcG9ydCBhbmQgZXhwb3J0IGZ1bmN0aW9ucy4nfSA9CiAgICAgICAgJ0F1dG9tYXRpa3VzIGJldMO2bHTDqXNpIGJlw6FsbMOtdMOhcyBhIHN6b2xnw6FsdGF0w6FzIGltcG9ydMOhbMOhc2Egw6lzIGV4cG9ydMOhbMOhc2EgZnVua2Npw7NraG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lclRpbGVTZXJ2aWNlQ2F0YWxvZyBBSkFYIE1vZHVsZS4nfSA9ICfDnGd5ZsOpbGNzZW1wZS1zem9sZ8OhbHRhdMOhc2thdGFsw7NndXMgQUpBWC1tb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBem9uIGRpbmFtaWt1cyBtZXrFkSBvYmpla3R1bXTDrXB1c29rIGxpc3TDoWrDoW5hayBtZWdoYXTDoXJvesOhc2EsIGFtZWx5ZWsgaG96esOhcmVuZGVsaGV0xZFrIGEgY3NvbWFnIG3FsXZlbGV0ZWloZXogYSBkaW5hbWlrdXMgbWV6xZEga8OpcGVybnnFkWluZWsgZmVsw7xsZXTDqW4ga2VyZXN6dMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIHNlcnZpY2UgY2F0YWxvZyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lmw6lsZmVsw7xsZXQgc3pvbGfDoWx0YXTDoXNrYXRhbMOzZ3VzIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSByZWdpc3RyYXRpb24uIEN1cnJlbnRseSwgdGhlIGNyaXRpY2FsaXR5IG9mIHRoZSBzZXJ2aWNlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgc2VydmljZSwgYnV0IHRoaXMgaGFzIG5vIGVmZmVjdC4gVGhlcmVmb3JlLCB0aGlzIGV2ZW50IG1vZHVsZSBoYXMgYmVlbiBpbXBsZW1lbnRlZCB0aGF0IGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgRHluYW1pY0ZpZWxkIENyaXRpY2FsaXR5IGluIGEgdGlja2V0IGFzIHNvb24gYXMgYSBzZXJ2aWNlIGhhcyBiZWVuIGFzc2lnbmVkLiBQbGVhc2UgYWN0aXZhdGUgdGhlIFN5c0NvbmZpZyBvcHRpb24gU2V0UHJpb3JpdHlGcm9tQ3JpdGljYWxpdHlBbmRJbXBhY3RNYXRyaXggdG8gc2V0IHRoZSBwcmlvcml0eSBpbiB0aGUgbmV4dCBzdGVwIGJhc2VkIGFuIENyaXRpY2FsaXR5IGFuZCBJbXBhY3QuJ30gPQogICAgICAgICdFc2Vtw6lueW1vZHVsIHJlZ2lzenRyw6FjacOzLiBKZWxlbmxlZyBhIHN6b2xnw6FsdGF0w6FzIGtyaXRpa3Vzc8OhZ2EgYmXDoWxsw610aGF0w7MgYSBzem9sZ8OhbHRhdMOhc2JhbiBpcywgZGUgZW5uZWsgbmluY3MgaGF0w6FzYS4gRXrDqXJ0IGtlcsO8bHQgbWVndmFsw7Nzw610w6FzcmEgZXogYXogZXNlbcOpbnltb2R1bCwgYW1lbHkgYXV0b21hdGlrdXNhbiBmcmlzc8OtdGkgYSBrcml0aWt1c3PDoWcgZGluYW1pa3VzIG1lesWRdCBhIGplZ3liZW4sIGFtaW50IGVneSBzem9sZ8OhbHRhdMOhcyBob3p6w6FyZW5kZWzDqXNyZSBrZXLDvGwuIEFrdGl2w6FsamEgYSDigJ5TZXRQcmlvcml0eUZyb21Dcml0aWNhbGl0eUFuZEltcGFjdE1hdHJpeOKAnSByZW5kc3plcmJlw6FsbMOtdMOhc2kgbGVoZXTFkXPDqWdldCwgaG9neSBiZcOhbGzDrXRzYSBhIHByaW9yaXTDoXN0IGEga8O2dmV0a2V6xZEgbMOpcMOpc2JlbiBlZ3kga3JpdGlrdXNzw6FnIMOpcyBoYXTDoXMgYWxhcGrDoW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSByZWdpc3RyYXRpb24uIEN1cnJlbnRseSwgdGhlIGNyaXRpY2FsaXR5IG9mIHRoZSBzZXJ2aWNlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgc2VydmljZSwgYnV0IHRoaXMgaGFzIG5vIGVmZmVjdC4gVGhlcmVmb3JlLCB0aGlzIGV2ZW50IG1vZHVsZSBoYXMgYmVlbiBpbXBsZW1lbnRlZCB0aGF0IGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgcHJpb3JpdHkgcmVnYXJkaW5nIENyaXRpY2FsaXR5IGFuZCBJbXBhY3QgaW4gYSB0aWNrZXQuJ30gPQogICAgICAgICdFc2Vtw6lueW1vZHVsIHJlZ2lzenRyw6FjacOzLiBKZWxlbmxlZyBhIHN6b2xnw6FsdGF0w6FzIGtyaXRpa3Vzc8OhZ2EgYmXDoWxsw610aGF0w7MgYSBzem9sZ8OhbHRhdMOhc2JhbiBpcywgZGUgZW5uZWsgbmluY3MgaGF0w6FzYS4gRXrDqXJ0IGtlcsO8bHQgbWVndmFsw7Nzw610w6FzcmEgZXogYXogZXNlbcOpbnltb2R1bCwgYW1lbHkgYXV0b21hdGlrdXNhbiBmcmlzc8OtdGkgYSBwcmlvcml0w6FzdCBhIGtyaXRpa3Vzc8OhZ3JhIMOpcyBoYXTDoXNyYSB2b25hdGtvesOzYW4gYSBqZWd5YmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHNlcnZpY2VzIHdpdGggdGhlIGZvbGxvd2luZyB0aWNrZXQgdHlwZSBsYXN0Lid9ID0gJ0Ega8O2dmV0a2V6xZEgamVneXTDrXB1c29ra2FsIHJlbmRlbGtlesWRIHN6b2xnw6FsdGF0w6Fzb2sgbWVnamVsZW7DrXTDqXNlIHV0b2xqw6FyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIEZBUSBmaWVsZCB0aGF0IHNob3VsZCBiZSB1c2VkIGFzIHRoZSBkZXNjcmlwdGlvbiBvZiBhbiBGQVEgYXJ0aWNsZSBpbiB0aGUgc2lkZWJhciAoZS5nLiBGaWVsZDEsIEZpZWxkMiwgRmllbGQzLi4uKS4nfSA9CiAgICAgICAgJ0F6IGEgR3lJSyBtZXrFkSwgYW1lbHlldCBlZ3kgR3lJSyBiZWplZ3l6w6lzIGxlw61yw6FzYWvDqW50IGtlbGwgaGFzem7DoWxuaSBheiBvbGRhbHPDoXZiYW4gKHDDqWxkw6F1bCBNZXrFkTEsIE1lesWRMiwgTWV6xZEzIHN0Yi4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgQUNMcyBmb3IgZGlmZmVyZW50IGludGVyZmFjZXMgd2hlbiBjcmVhdGluZyBzZXJ2aWNlcy4gU2VydmljZXMgd2lsbCB0aGVuIG9ubHkgYmUgZGlzcGxheWVkIGlmIHRoZSB0aWNrZXQgdHlwZSBzdG9yZWQgaW4gdGhlIHNlcnZpY2UgaGFzIGJlZW4gc2VsZWN0ZWQuIFRoZSAiQWRkQnVsa0FDTCIgY29uc29sZSBzY3JpcHQgY2FuIGFsc28gYmUgdXNlZCB0byBjcmVhdGUgQUNMcyBmb3Igc2VydmljZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBjcmVhdGUuJ30gPQogICAgICAgICdFeiBhIGJlw6FsbMOtdMOhcyBsZWhldMWRdsOpIHRlc3ppIEFDTC1layBhdXRvbWF0aWt1cyBlbMWRw6FsbMOtdMOhc8OhdCBhIGvDvGzDtm5iw7Z6xZEgZmVsw7xsZXRla2hleiBhIHN6b2xnw6FsdGF0w6Fzb2sgbMOpdHJlaG96w6FzYWtvci4gQSBzem9sZ8OhbHRhdMOhc29rIGV6dXTDoW4gY3NhayBha2tvciBqZWxlbm5layBtZWcsIGhhIGEgc3pvbGfDoWx0YXTDoXNiYW4gdMOhcm9sdCBqZWd5dMOtcHVzdCBraXbDoWxhc3p0b3R0w6FrLiBBeiDigJ5BZGRCdWxrQUNM4oCdIGtvbnpvbHBhcmFuY3MgaXMgaGFzem7DoWxoYXTDsyBhIG3DoXIgbMOpdHJlaG96b3R0IHN6b2xnw6FsdGF0w6Fzb2tob3ogdGFydG96w7MgQUNMLWVrIGzDqXRyZWhvesOhc8OhcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgb3B0aW9uIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHByZWNvbmZpZ3VyZSB0aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgQUNMcy4gVGhlIGFpbSBpcyB0byBvbmx5IGRpc3BsYXkgdGhlIHNlcnZpY2VzIHRoYXQgaGF2ZSBhbHNvIGJlZW4gYXNzaWduZWQgdG8gdGhlIHNlcnZpY2UgaW4gdGhlIHNlcnZpY2UgY2F0YWxvZy4gVG8gdXNlIHRoaXMgZnVuY3Rpb24sIHBsZWFzZSBmaXJzdCBlbmFibGUgdGhlICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNscyIgb3B0aW9uLiAiR2VuZXJhdGVJbml0YWxBQ0xUb0Rpc2FibGVBbGxTZXJ2aWNlcyIgZ2VuZXJhdGVzIGFuIEFDTCB0aGF0IGluaXRpYWxseSBoaWRlcyBhbGwgc2VydmljZXMuIFRoZSB2YWx1ZSAiUG9zc2libGUiIG9yICJQb3NzaWJsZUFkZCIgY2FuIGJlIHNldCBmb3IgdGhlIGtleSAiQ29uZmlnQ2hhbmdlIi4gVGhlICJEZXBsb3lOZXdBQ0wiIGtleSBkZWNpZGVzIHdoZXRoZXIgdGhlIGNoYW5nZWQgQUNMIHNob3VsZCBhbHNvIGJlIGRlcGxveWVkIGltbWVkaWF0ZWx5LiAiQUNMVmFsaWRJRCIgKDEsIDIsIDMpIHNldHMgdGhlIEFDTHMgdG8gdmFsaWQsIGludmFsaWQgb3IgdGVtcG9yYXJpbHkgaW52YWxpZC4nfSA9CiAgICAgICAgJ0V6IGEgYmXDoWxsw610w6FzIGxlaGV0xZF2w6kgdGVzemkgYXogYXV0b21hdGlrdXNhbiBlbMWRw6FsbMOtdG90dCBBQ0wtZWsgZWzFkXpldGVzIGJlw6FsbMOtdMOhc8OhdC4gQSBjw6lsIGF6LCBob2d5IGNzYWsgb2x5YW4gc3pvbGfDoWx0YXTDoXNvayBqZWxlbmplbmVrIG1lZywgYW1lbHllayBob3p6w6EgaXMgbGV0dGVrIHJlbmRlbHZlIGEgc3pvbGfDoWx0YXTDoXNob3ogYSBzem9sZ8OhbHRhdMOhc2thdGFsw7NndXNiYW4uIEEgZnVua2Npw7MgaGFzem7DoWxhdMOhaG96IGVsxZFzesO2ciBlbmdlZMOpbHllenplIGEg4oCeU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHPigJ0gYmXDoWxsw610w6FzdC4gQSDigJ5HZW5lcmF0ZUluaXRhbEFDTFRvRGlzYWJsZUFsbFNlcnZpY2Vz4oCdIG9seWFuIEFDTC10IMOhbGzDrXQgZWzFkSwgYW1lbHkga2V6ZGV0YmVuIGVscmVqdGkgYXogw7Zzc3plcyBzem9sZ8OhbHRhdMOhc3QuIEEg4oCeUG9zc2libGXigJ0gdmFneSDigJ5Qb3NzaWJsZUFkZOKAnSDDqXJ0w6lrIMOhbGzDrXRoYXTDsyBiZSBhIOKAnkNvbmZpZ0NoYW5nZeKAnSBrdWxjc2hvei4gQSDigJ5EZXBsb3lOZXdBQ0zigJ0ga3VsY3MgZMO2bnRpIGVsLCBob2d5IGEgbWVndsOhbHRvenRhdG90dCBBQ0wtdCBpcyBhem9ubmFsIMO8emVtYmUga2VsbC1lIMOhbGzDrXRhbmkuIEF6IOKAnkFDTFZhbGlkSUTigJ0gKDEsIDIsIDMpIMOhbGzDrXRqYSBiZSBheiBBQ0wtZWtldCDDqXJ2w6lueWVzcmUsIMOpcnbDqW55dGVsZW5yZSB2YWd5IMOhdG1lbmV0aWxlZyDDqXJ2w6lueXRlbGVucmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ3VzdG9tZXJEYXNoYm9hcmQuIE1vZHVsZSBpcyByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0NzZW1wZXJlZ2lzenRyw6FjacOzIGF6IMO8Z3lmw6lsIHZlesOpcmzFkXB1bHRqw6Fob3ouIEEgbW9kdWwga8O2dGVsZXrFkS4nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGRpdGlvbmFsIGluZm9ybWF0aW9uJywKICAgICdBbGwnLAogICAgJ0Nsb3NlIHRoaXMgZGlhbG9nJywKICAgICdDcmVhdGUgJXMnLAogICAgJ0NyZWF0ZSBUaWNrZXQnLAogICAgJ0NyZWF0ZSBhIG5ldyB0aWNrZXQgZm9yIHRoaXMgc2VydmljZS4nLAogICAgJ0NyZWF0ZSBhIG5ldyB0aWNrZXQgb2YgdHlwZSAlcy4nLAogICAgJ0RldGFpbHMnLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBzZXJ2aWNlIGRlc2NyaXB0aW9uIGxhbmd1YWdlPycsCiAgICAnRkFRIGFydGljbGUgb24gdGhpcyB0b3BpYycsCiAgICAnRmlyc3QgUmVzcG9uc2UgVGltZScsCiAgICAnRnVydGhlciBpbmZvcm1hdGlvbicsCiAgICAnTW9yZSBkZXRhaWxzJywKICAgICdObyBhZGRpdGlvbmFsIGRhdGEgYXJlIGF2YWlsYWJsZS4nLAogICAgJ09LJywKICAgICdSZXN1bHRzJywKICAgICdSZXN1bHRzIGZvciAlcycsCiAgICAnU2VhcmNoJywKICAgICdTZWFyY2ggY2F0YWxvZycsCiAgICAnU2VydmljZSBJbmZvcm1hdGlvbicsCiAgICAnU2VydmljZSBob3VycycsCiAgICAnU2hvdyAlcyBzdWItc2VydmljZShzKScsCiAgICAnU2hvdyBkZXRhaWxzIG9mIHRoaXMgc2VydmljZS4nLAogICAgJ1Nob3cgb3IgaGlkZSB0aGUgY29udGVudCcsCiAgICAnU29sdXRpb24gVGltZScsCiAgICAnU3ViLVNlcnZpY2UocyknLAogICAgJ2hvdXIocyknLAogICAgJ29cJ2Nsb2NrJywKICAgICdzdWItc2VydmljZShzKSBhdmFpbGFibGUnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AdminServiceImportExport.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIFpudW55IEdtYkgsIGh0dHA6Ly96bnVueS5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWRtaW5TZXJ2aWNlSW1wb3J0RXhwb3J0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OkFsbFV0aWxzIHF3KGZpcnN0KTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlZhbGlkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6WUFNTCcsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBvYmplY3RzCiAgICBteSAkTGF5b3V0T2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRTZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJFlBTUxPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwogICAgbXkgJENhY2hlT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKCiAgICAkU2VsZi0+e1N1YmFjdGlvbn0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3ViYWN0aW9uJyApIHx8ICcnOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgSW1wb3J0CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnSW1wb3J0JyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgbXkgJVVwbG9hZFN0dWZmID0gJFBhcmFtT2JqZWN0LT5HZXRVcGxvYWRBbGwoCiAgICAgICAgICAgIFBhcmFtID0+ICdGaWxlVXBsb2FkJywKICAgICAgICApOwoKICAgICAgICBteSAkT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllcyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzJyApOwoKICAgICAgICBteSAkUGVybFN0cnVjdHVyZSA9ICRZQU1MT2JqZWN0LT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICRVcGxvYWRTdHVmZntDb250ZW50fSwKICAgICAgICApOwoKICAgICAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0FkbWluU2VydmljZUltcG9ydEV4cG9ydCcsCiAgICAgICAgICAgIEtleSAgID0+ICdBZG1pblNlcnZpY2VJbXBvcnRFeHBvcnQ6OicgLiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFZhbHVlID0+ICRQZXJsU3RydWN0dXJlLAogICAgICAgICAgICBUVEwgICA9PiA2MCAqIDYwLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkU2VsZi0+X01hc2soCiAgICAgICAgICAgIERhdGEgICAgICAgICAgICAgICAgICAgICAgPT4gJFBlcmxTdHJ1Y3R1cmUsCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntTdWJhY3Rpb259LAogICAgICAgICAgICBPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzID0+ICRPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzIHx8IDAsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEltcG9ydEFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0ltcG9ydEFjdGlvbicgKSB7CgogICAgICAgIG15ICRJbXBvcnREYXRhID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgICAgIFR5cGUgPT4gJ0FkbWluU2VydmljZUltcG9ydEV4cG9ydCcsCiAgICAgICAgICAgIEtleSAgPT4gJ0FkbWluU2VydmljZUltcG9ydEV4cG9ydDo6JyAuICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkSW1wb3J0RGF0YSkgKSB7CgogICAgICAgICAgICAjIHJlZGlyZWN0IHRvIEFkbWluU2VydmljZQogICAgICAgICAgICBteSAkSFRNTCA9ICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZG1pblNlcnZpY2UiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJEhUTUw7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBteSBAU2VydmljZXNTZWxlY3RlZCAgICAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdTZXJ2aWNlcycgKTsKICAgICAgICBteSAkT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllcyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzJyApIHx8IDA7CgogICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICBUeXBlID0+ICdBZG1pblNlcnZpY2VJbXBvcnRFeHBvcnQnLAogICAgICAgICAgICBLZXkgID0+ICdBZG1pblNlcnZpY2VJbXBvcnRFeHBvcnQ6OicgLiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgICAgICMgSW1wb3J0IFNlcnZpY2VzCiAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRJbXBvcnREYXRhLT57U2VydmljZXN9ICkgKSB7CgogICAgICAgICAgICBteSAlU2VydmljZXNJbXBvcnQ7CiAgICAgICAgICAgIFNFUlZJQ0VOQU1FOgogICAgICAgICAgICBmb3IgbXkgJFNlcnZpY2VOYW1lICgga2V5cyAkSW1wb3J0RGF0YS0+e1NlcnZpY2VzfS0+JSogKSB7CgogICAgICAgICAgICAgICAgbXkgJFNlbGVjdGVkID0gZ3JlcCB7ICRTZXJ2aWNlTmFtZSBlcSAkXyB9IEBTZXJ2aWNlc1NlbGVjdGVkOwogICAgICAgICAgICAgICAgbmV4dCBTRVJWSUNFTkFNRSBpZiAhJFNlbGVjdGVkOwoKICAgICAgICAgICAgICAgIG5leHQgU0VSVklDRU5BTUUgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkSW1wb3J0RGF0YS0+e1NlcnZpY2VzfXskU2VydmljZU5hbWV9ICk7CgogICAgICAgICAgICAgICAgJFNlcnZpY2VzSW1wb3J0eyRTZXJ2aWNlTmFtZX0gPSAkSW1wb3J0RGF0YS0+e1NlcnZpY2VzfXskU2VydmljZU5hbWV9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkU2VydmljZU9iamVjdC0+SW1wb3J0U2VydmljZXMoCiAgICAgICAgICAgICAgICBTZXJ2aWNlcyAgICAgICAgICAgICAgICAgID0+IFwlU2VydmljZXNJbXBvcnQsCiAgICAgICAgICAgICAgICBPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzID0+ICRPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHJlZGlyZWN0IHRvIEFkbWluU2VydmljZQogICAgICAgIG15ICRIVE1MID0gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICJBY3Rpb249QWRtaW5TZXJ2aWNlIgogICAgICAgICk7CgogICAgICAgIHJldHVybiAkSFRNTDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEV4cG9ydAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0V4cG9ydCcgKSB7CgogICAgICAgIHJldHVybiAkU2VsZi0+X01hc2soCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e1N1YmFjdGlvbn0sCiAgICAgICAgKTsKCiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBFeHBvcnRBY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdFeHBvcnRBY3Rpb24nICkgewoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBteSBAU2VydmljZXMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnU2VydmljZXMnICk7CgogICAgICAgIG15ICVEYXRhOwogICAgICAgIG15ICRIVE1MOwoKICAgICAgICBpZiAoQFNlcnZpY2VzKSB7CgogICAgICAgICAgICAkRGF0YXtTZXJ2aWNlc30gPSAkU2VydmljZU9iamVjdC0+RXhwb3J0U2VydmljZXMoCiAgICAgICAgICAgICAgICBTZXJ2aWNlcyA9PiBcQFNlcnZpY2VzLAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJURhdGEgKSB7CgogICAgICAgICAgICAjIHJlZGlyZWN0IHRvIEFkbWluU2VydmljZUltcG9ydEV4cG9ydAogICAgICAgICAgICAkSFRNTCAuPSAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgICAgIE9QID0+ICJBY3Rpb249QWRtaW5TZXJ2aWNlSW1wb3J0RXhwb3J0O1N1YmFjdGlvbj1FeHBvcnQiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJEhUTUw7CiAgICAgICAgfQoKICAgICAgICAjIGNvbnZlcnQgdGhlIHNlcnZpY2UgZGF0YSBoYXNoIHRvIHN0cmluZwogICAgICAgIG15ICRTZXJ2aWNlRGF0YVlBTUwgPSAkWUFNTE9iamVjdC0+RHVtcCggRGF0YSA9PiBcJURhdGEgKTsKCiAgICAgICAgIyBHZXQgdGhlIGN1cnJlbnQgdGltZSBmb3JtYXR0ZWQgbGlrZSAnMjAxNi0wMS0zMSAxNDowNTo0NScuCiAgICAgICAgIyBIb3BpbmcgdGhhdCBub2JvZHkgaGFzIHJlZ2lzdGVyZWQgb2JqZWN0IHBhcmFtcyBmb3IgS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lCiAgICAgICAgbXkgJFRpbWVTdGFtcCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpLT5Ub1N0cmluZygpOwoKICAgICAgICAjIHNlbmQgdGhlIHJlc3VsdCB0byB0aGUgYnJvd3NlcgogICAgICAgICRIVE1MID0gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbDsgY2hhcnNldD0nIC4gJExheW91dE9iamVjdC0+e0NoYXJzZXR9LAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkU2VydmljZURhdGFZQU1MLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnYXR0YWNobWVudCcsCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICJFeHBvcnRfU2VydmljZXNfJFRpbWVTdGFtcC55bWwiLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkSFRNTDsKCiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzZSB7CgogICAgICAgICMgcmVkaXJlY3QgdG8gQWRtaW5TZXJ2aWNlCiAgICAgICAgbXkgJEhUTUwgPSAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZG1pblNlcnZpY2UiCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRIVE1MOwogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9NYXNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkU2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ0FjdGlvbk92ZXJ2aWV3JyApOwoKICAgICMgY2FsbCBoaW50IGJsb2NrCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICRQYXJhbXtUeXBlfSAuICdIaW50JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgIH0sCiAgICApOwoKICAgIGlmICggISRQYXJhbXtEYXRhfSApIHsKCiAgICAgICAgJFBhcmFte0RhdGF9e1NlcnZpY2VzfSA9IHt9OwoKICAgICAgICAjIFRPRE8gY2hhbmdlIHRvIFNlcnZpY2VMaXN0R2V0KCkKICAgICAgICAjIGV4cG9ydAogICAgICAgIG15ICVTZXJ2aWNlcyA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlTGlzdCgKICAgICAgICAgICAgVmFsaWQgID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2VydmljZSBkYXRhCiAgICAgICAgZm9yIG15ICRTZXJ2aWNlSUQgKCBrZXlzICVTZXJ2aWNlcyApIHsKICAgICAgICAgICAgbXkgJVNlcnZpY2VEYXRhID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VHZXQoCiAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJFNlcnZpY2VJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkUGFyYW17RGF0YX17U2VydmljZXN9eyAkU2VydmljZURhdGF7TmFtZX0gfSA9IFwlU2VydmljZURhdGE7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICMgcHJpbnQgdGhlIGxpc3Qgb2Ygc2VydmljZXMKICAgICRTZWxmLT5fU2VydmljZVNob3coCiAgICAgICAgJVBhcmFtLAogICAgKTsKCiAgICAjIG91dHB1dCBoZWFkZXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5TZXJ2aWNlSW1wb3J0RXhwb3J0JywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX1NlcnZpY2VTaG93IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRWYWxpZE9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKTsKCiAgICAjIGNoZWNrIGlmIGF0IGxlYXN0IDEgZHluYW1pYyBmaWVsZCBpcyByZWdpc3RlcmVkIGluIHRoZSBzeXN0ZW0KICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfXtTZXJ2aWNlc30gKSApIHsKCiAgICAgICAgbXkgQFNlcnZpY2VzQWxyZWFkeVVzZWQ7CgogICAgICAgIFNFUlZJQ0VOQU1FOgogICAgICAgIGZvciBteSAkU2VydmljZU5hbWUgKCBzb3J0IGtleXMgJFBhcmFte0RhdGF9e1NlcnZpY2VzfS0+JSogKSB7CgogICAgICAgICAgICBteSAkU2VydmljZURhdGEgPSAkUGFyYW17RGF0YX17U2VydmljZXN9eyRTZXJ2aWNlTmFtZX07CgogICAgICAgICAgICBwdXNoIEBTZXJ2aWNlc0FscmVhZHlVc2VkLCAkU2VydmljZURhdGEtPntOYW1lfTsKCiAgICAgICAgICAgIG5leHQgU0VSVklDRU5BTUUgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRTZXJ2aWNlRGF0YSk7CgogICAgICAgICAgICAjIGNvbnZlcnQgVmFsaWRJRCB0byBWYWxpZGl0eSBzdHJpbmcKICAgICAgICAgICAgbXkgJFZhbGlkID0gJFNlcnZpY2VEYXRhLT57VmFsaWR9IHx8ICRWYWxpZE9iamVjdC0+VmFsaWRMb29rdXAoCiAgICAgICAgICAgICAgICBWYWxpZElEID0+ICRTZXJ2aWNlRGF0YS0+e1ZhbGlkSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJVNlcnZpY2VEYXRhID0gKAogICAgICAgICAgICAgICAgJXskU2VydmljZURhdGF9LAogICAgICAgICAgICAgICAgVmFsaWQgPT4gJFZhbGlkLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgZm9yIG15ICRCbG9ja3MgKCAnU2VydmljZXNSb3cnLCAnU2VydmljZUNoZWNrYm94JywgJFBhcmFte1R5cGV9ICkgewoKICAgICAgICAgICAgICAgICMgcHJpbnQgZWFjaCBzZXJ2aWNlIHJvdwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkQmxvY2tzLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlU2VydmljZURhdGEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBvdGhlcndpc2Ugc2hvdyBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vRGF0YUZvdW5kJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AdminSLAImportExport.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIFpudW55IEdtYkgsIGh0dHA6Ly96bnVueS5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWRtaW5TTEFJbXBvcnRFeHBvcnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6QWxsVXRpbHMgcXcoZmlyc3QpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTTEEnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OllBTUwnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgb2JqZWN0cwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRTTEFPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U0xBJyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJFlBTUxPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CiAgICBteSAkQ2FjaGVPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgJFNlbGYtPntTdWJhY3Rpb259ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N1YmFjdGlvbicgKSB8fCAnJzsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEltcG9ydAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0ltcG9ydCcgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIG15ICVVcGxvYWRTdHVmZiA9ICRQYXJhbU9iamVjdC0+R2V0VXBsb2FkQWxsKAogICAgICAgICAgICBQYXJhbSA9PiAnRmlsZVVwbG9hZCcsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJE92ZXJ3cml0ZUV4aXN0aW5nRW50aXRpZXMgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllcycgKTsKCiAgICAgICAgbXkgJFBlcmxTdHJ1Y3R1cmUgPSAkWUFNTE9iamVjdC0+TG9hZCgKICAgICAgICAgICAgRGF0YSA9PiAkVXBsb2FkU3R1ZmZ7Q29udGVudH0sCiAgICAgICAgKTsKCiAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICdBZG1pblNMQUltcG9ydEV4cG9ydCcsCiAgICAgICAgICAgIEtleSAgID0+ICdBZG1pblNMQUltcG9ydEV4cG9ydDo6JyAuICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVmFsdWUgPT4gJFBlcmxTdHJ1Y3R1cmUsCiAgICAgICAgICAgIFRUTCAgID0+IDYwICogNjAsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fTWFzaygKICAgICAgICAgICAgRGF0YSAgICAgICAgICAgICAgICAgICAgICA9PiAkUGVybFN0cnVjdHVyZSwKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1N1YmFjdGlvbn0sCiAgICAgICAgICAgIE92ZXJ3cml0ZUV4aXN0aW5nRW50aXRpZXMgPT4gJE92ZXJ3cml0ZUV4aXN0aW5nRW50aXRpZXMgfHwgMCwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgSW1wb3J0QWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnSW1wb3J0QWN0aW9uJyApIHsKCiAgICAgICAgbXkgJEltcG9ydERhdGEgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICAgICAgVHlwZSA9PiAnQWRtaW5TTEFJbXBvcnRFeHBvcnQnLAogICAgICAgICAgICBLZXkgID0+ICdBZG1pblNMQUltcG9ydEV4cG9ydDo6JyAuICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkSW1wb3J0RGF0YSkgKSB7CgogICAgICAgICAgICAjIHJlZGlyZWN0IHRvIEFkbWluU0xBCiAgICAgICAgICAgIG15ICRIVE1MID0gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPUFkbWluU0xBIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICRIVE1MOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayByZXF1aXJlZCBwYXJhbWV0ZXJzCiAgICAgICAgbXkgQFNMQXNTZWxlY3RlZCAgICAgICAgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnU0xBcycgKTsKICAgICAgICBteSAkT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllcyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzJyApIHx8IDA7CgogICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICBUeXBlID0+ICdBZG1pblNMQUltcG9ydEV4cG9ydCcsCiAgICAgICAgICAgIEtleSAgPT4gJ0FkbWluU0xBSW1wb3J0RXhwb3J0OjonIC4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICAgICAjIEltcG9ydCBTTEFzCiAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRJbXBvcnREYXRhLT57U0xBc30gKSApIHsKCiAgICAgICAgICAgIG15ICVTTEFJbXBvcnQ7CiAgICAgICAgICAgIFNMQU5BTUU6CiAgICAgICAgICAgIGZvciBteSAkU0xBTmFtZSAoIGtleXMgJEltcG9ydERhdGEtPntTTEFzfS0+JSogKSB7CgogICAgICAgICAgICAgICAgbXkgJFNlbGVjdGVkID0gZ3JlcCB7ICRTTEFOYW1lIGVxICRfIH0gQFNMQXNTZWxlY3RlZDsKICAgICAgICAgICAgICAgIG5leHQgU0xBTkFNRSBpZiAhJFNlbGVjdGVkOwoKICAgICAgICAgICAgICAgIG5leHQgU0xBTkFNRSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRJbXBvcnREYXRhLT57U0xBc317JFNMQU5hbWV9ICk7CgogICAgICAgICAgICAgICAgJFNMQUltcG9ydHskU0xBTmFtZX0gPSAkSW1wb3J0RGF0YS0+e1NMQXN9eyRTTEFOYW1lfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFNMQU9iamVjdC0+SW1wb3J0U0xBcygKICAgICAgICAgICAgICAgIFNMQXMgICAgICAgICAgICAgICAgICAgICAgPT4gXCVTTEFJbXBvcnQsCiAgICAgICAgICAgICAgICBPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzID0+ICRPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHJlZGlyZWN0IHRvIEFkbWluU0xBCiAgICAgICAgbXkgJEhUTUwgPSAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZG1pblNMQSIKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJEhUTUw7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBFeHBvcnQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdFeHBvcnQnICkgewoKICAgICAgICByZXR1cm4gJFNlbGYtPl9NYXNrKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntTdWJhY3Rpb259LAogICAgICAgICk7CgogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgRXhwb3J0QWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRXhwb3J0QWN0aW9uJyApIHsKCiAgICAgICAgIyBjaGVjayByZXF1aXJlZCBwYXJhbWV0ZXJzCiAgICAgICAgbXkgQFNMQXMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnU0xBcycgKTsKCiAgICAgICAgbXkgJURhdGE7CiAgICAgICAgbXkgJEhUTUw7CgogICAgICAgIGlmIChAU0xBcykgewoKICAgICAgICAgICAgJERhdGF7U0xBc30gPSAkU0xBT2JqZWN0LT5FeHBvcnRTTEFzKAogICAgICAgICAgICAgICAgU0xBcyAgID0+IFxAU0xBcywKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICElRGF0YSApIHsKCiAgICAgICAgICAgICMgcmVkaXJlY3QgdG8gQWRtaW5TTEFJbXBvcnRFeHBvcnQKICAgICAgICAgICAgJEhUTUwgLj0gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPUFkbWluU0xBSW1wb3J0RXhwb3J0O1N1YmFjdGlvbj1FeHBvcnQiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJEhUTUw7CiAgICAgICAgfQoKICAgICAgICAjIGNvbnZlcnQgdGhlIFNMQSBkYXRhIGhhc2ggdG8gc3RyaW5nCiAgICAgICAgbXkgJFNMQURhdGFZQU1MID0gJFlBTUxPYmplY3QtPkR1bXAoIERhdGEgPT4gXCVEYXRhICk7CgogICAgICAgICMgR2V0IHRoZSBjdXJyZW50IHRpbWUgZm9ybWF0dGVkIGxpa2UgJzIwMTYtMDEtMzEgMTQ6MDU6NDUnLgogICAgICAgICMgSG9waW5nIHRoYXQgbm9ib2R5IGhhcyByZWdpc3RlcmVkIG9iamVjdCBwYXJhbXMgZm9yIEtlcm5lbDo6U3lzdGVtOjpEYXRlVGltZQogICAgICAgIG15ICRUaW1lU3RhbXAgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKS0+VG9TdHJpbmcoKTsKCiAgICAgICAgIyBzZW5kIHRoZSByZXN1bHQgdG8gdGhlIGJyb3dzZXIKICAgICAgICAkSFRNTCA9ICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWw7IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJFNMQURhdGFZQU1MLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnYXR0YWNobWVudCcsCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICJFeHBvcnRfU0xBc18kVGltZVN0YW1wLnltbCIsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRIVE1MOwoKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNlIHsKCiAgICAgICAgIyByZWRpcmVjdCB0byBBZG1pblNMQQogICAgICAgIG15ICRIVE1MID0gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICJBY3Rpb249QWRtaW5TTEEiCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRIVE1MOwogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9NYXNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRTTEFPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U0xBJyk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ0FjdGlvbk92ZXJ2aWV3JyApOwoKICAgICMgY2FsbCBoaW50IGJsb2NrCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICRQYXJhbXtUeXBlfSAuICdIaW50JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgIH0sCiAgICApOwoKICAgIGlmICggISRQYXJhbXtEYXRhfSApIHsKCiAgICAgICAgJFBhcmFte0RhdGF9e1NMQXN9ID0ge307CgogICAgICAgICMgVE9ETyBjaGFuZ2UgdG8gU0xBTGlzdEdldCgpCiAgICAgICAgIyBleHBvcnQKICAgICAgICBteSAlU0xBcyA9ICRTTEFPYmplY3QtPlNMQUxpc3QoCiAgICAgICAgICAgIFZhbGlkICA9PiAwLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IFNMQSBkYXRhCiAgICAgICAgZm9yIG15ICRTTEFJRCAoIGtleXMgJVNMQXMgKSB7CiAgICAgICAgICAgIG15ICVTTEFEYXRhID0gJFNMQU9iamVjdC0+U0xBR2V0KAogICAgICAgICAgICAgICAgU0xBSUQgID0+ICRTTEFJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkUGFyYW17RGF0YX17U0xBc317ICRTTEFEYXRhe05hbWV9IH0gPSBcJVNMQURhdGE7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICMgcHJpbnQgdGhlIGxpc3Qgb2YgU0xBcwogICAgJFNlbGYtPl9TTEFTaG93KAogICAgICAgICVQYXJhbSwKICAgICk7CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluU0xBSW1wb3J0RXhwb3J0JywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX1NMQVNob3cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJFZhbGlkT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwoKICAgICMgY2hlY2sgaWYgYXQgbGVhc3QgMSBkeW5hbWljIGZpZWxkIGlzIHJlZ2lzdGVyZWQgaW4gdGhlIHN5c3RlbQogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9e1NMQXN9ICkgKSB7CgogICAgICAgIG15IEBTTEFzQWxyZWFkeVVzZWQ7CgogICAgICAgIFNMQU5BTUU6CiAgICAgICAgZm9yIG15ICRTTEFOYW1lICggc29ydCBrZXlzICRQYXJhbXtEYXRhfXtTTEFzfS0+JSogKSB7CgogICAgICAgICAgICBteSAkU0xBRGF0YSA9ICRQYXJhbXtEYXRhfXtTTEFzfXskU0xBTmFtZX07CgogICAgICAgICAgICBwdXNoIEBTTEFzQWxyZWFkeVVzZWQsICRTTEFEYXRhLT57TmFtZX07CgogICAgICAgICAgICBuZXh0IFNMQU5BTUUgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRTTEFEYXRhKTsKCiAgICAgICAgICAgICMgY29udmVydCBWYWxpZElEIHRvIFZhbGlkaXR5IHN0cmluZwogICAgICAgICAgICBteSAkVmFsaWQgPSAkU0xBRGF0YS0+e1ZhbGlkfSB8fCAkVmFsaWRPYmplY3QtPlZhbGlkTG9va3VwKAogICAgICAgICAgICAgICAgVmFsaWRJRCA9PiAkU0xBRGF0YS0+e1ZhbGlkSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJVNMQURhdGEgPSAoCiAgICAgICAgICAgICAgICAleyRTTEFEYXRhfSwKICAgICAgICAgICAgICAgIFZhbGlkID0+ICRWYWxpZCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGZvciBteSAkQmxvY2tzICggJ1NMQXNSb3cnLCAnU0xBQ2hlY2tib3gnLCAkUGFyYW17VHlwZX0gKSB7CgogICAgICAgICAgICAgICAgIyBwcmludCBlYWNoIFNMQSByb3cKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJEJsb2NrcywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVNMQURhdGEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBvdGhlcndpc2Ugc2hvdyBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vRGF0YUZvdW5kJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/Modules/CustomerTileServiceCatalog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJUaWxlU2VydmljZUNhdGFsb2c7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzSGFzaFJlZldpdGhEYXRhKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJExheW91dE9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRTZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKTsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICRTZXJ2aWNlSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiU2VydmljZUlEIiApOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEhUTUxWaWV3IFN1YmFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdIVE1MVmlldycgKSB7CgogICAgICAgIGlmICggISRTZXJ2aWNlSUQgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkZWQgU2VydmljZUlEISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG15ICVTZXJ2aWNlID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VHZXQoCiAgICAgICAgICAgIFNlcnZpY2VJRCA9PiAkU2VydmljZUlELAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgdGhlIHVzZXIgaGFzIHBlcm1pc3Npb24gb24gdGhpcyBzZXJ2aWNlLgogICAgICAgIG15ICVTZXJ2aWNlTGlzdCA9ICRTZXJ2aWNlT2JqZWN0LT5DdXN0b21lclVzZXJTZXJ2aWNlTWVtYmVyTGlzdCgKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICA9PiAnSEFTSCcsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFNlcnZpY2VMaXN0eyAkU2VydmljZXtTZXJ2aWNlSUR9IH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lck5vUGVybWlzc2lvbiggV2l0aEhlYWRlciA9PiAneWVzJyApOwogICAgICAgIH0KCiAgICAgICAgIyBBZGQgX2JsYW5rIHRhcmdldCB0byBMaW5rcyBpbiBMb25nIERlc2NyaXB0aW9uCiAgICAgICAgJFNlcnZpY2V7RGVzY3JpcHRpb25Mb25nfSA9ICRMYXlvdXRPYmplY3QtPkhUTUxMaW5rUXVvdGUoCiAgICAgICAgICAgIFN0cmluZyA9PiAkU2VydmljZXtEZXNjcmlwdGlvbnN9eyAkTGF5b3V0T2JqZWN0LT57VXNlckxhbmd1YWdlfSB9e0Rlc2NyaXB0aW9uTG9uZ30KICAgICAgICAgICAgICAgIHx8ICRTZXJ2aWNle0Rlc2NyaXB0aW9uc317ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRGVmYXVsdExhbmd1YWdlJykgfXtEZXNjcmlwdGlvbkxvbmd9CiAgICAgICAgICAgICAgICB8fCAkU2VydmljZXtEZXNjcmlwdGlvbnN9eydlbid9e0Rlc2NyaXB0aW9uTG9uZ30gfHwgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZXNjcmlwdGlvbiBub3QgYXZhaWxhYmxlLicpLAogICAgICAgICk7CgogICAgICAgICRTZXJ2aWNle0Rlc2NyaXB0aW9uTG9uZ30KICAgICAgICAgICAgPX4gc3sgaW5kZXhbLl1wbCBbP10gQWN0aW9uPUFnZW50SVRTTVNlcnZpY2Vab29tIH17Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyVGlsZVNlcnZpY2VDYXRhbG9nfWd4bXM7CgogICAgICAgICMgYnVpbGQgYmFzZSBVUkwgZm9yIGlubGluZSBpbWFnZXMKICAgICAgICBteSAkU2Vzc2lvbklEID0gJyc7CiAgICAgICAgaWYgKCAkU2VsZi0+e1Nlc3Npb25JRH0gJiYgISRTZWxmLT57U2Vzc2lvbklEQ29va2llfSApIHsKICAgICAgICAgICAgJFNlc3Npb25JRCA9ICc7JyAuICRTZWxmLT57U2Vzc2lvbk5hbWV9IC4gJz0nIC4gJFNlbGYtPntTZXNzaW9uSUR9OwogICAgICAgICAgICAkU2VydmljZXtEZXNjcmlwdGlvbkxvbmd9ID1+IHN7CiAgICAgICAgICAgICAgICAoQWN0aW9uPUN1c3RvbWVyVGlsZVNlcnZpY2VDYXRhbG9nO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7U2VydmljZUlEPVxkKztGaWxlSUQ9XGQrKQogICAgICAgICAgICB9eyQxJFNlc3Npb25JRH1nbXN4OwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgbmVlZGVkIEhUTUwgaGVhZGVycwogICAgICAgICRTZXJ2aWNle0Rlc2NyaXB0aW9uTG9uZ30gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPkRvY3VtZW50Q29tcGxldGUoCiAgICAgICAgICAgIFN0cmluZyAgICAgICAgICAgID0+ICRTZXJ2aWNle0Rlc2NyaXB0aW9uTG9uZ30sCiAgICAgICAgICAgIENoYXJzZXQgICAgICAgICAgID0+ICd1dGYtOCcsCiAgICAgICAgICAgIEN1c3RvbWVySW50ZXJmYWNlID0+IDEsCiAgICAgICAgICAgIEN1c3RvbWVyVUlTdHlsZXMgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gY29tcGxldGUgSFRNTCBhcyBhbiBhdHRhY2htZW50CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJFNlcnZpY2V7RGVzY3JpcHRpb25Mb25nfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0R5bmFtaWNGaWVsZFZpZXcnICkgewoKICAgICAgICAjIGFkZCBzdXBwb3J0IGZvciBkeW5hbWljIGZpZWxkcwogICAgICAgIG15IEBEeW5hbWljRmllbGRMaXN0OwogICAgICAgIG15ICREeW5hbWljRmllbGRGaWx0ZXIgPSB7CiAgICAgICAgICAgICV7ICRDb25maWdPYmplY3QtPkdldCgiQ3VzdG9tZXJEYXNoYm9hcmQ6OkNvbmZpZ3VyYXRpb246OlNlcnZpY2VDYXRhbG9nIiktPntEeW5hbWljRmllbGR9IHx8IHt9IH0sCiAgICAgICAgfTsKCiAgICAgICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciBzZXJ2aWNlIG9iamVjdAogICAgICAgIG15ICREeW5hbWljRmllbGRMb29rdXAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgICAgIE9iamVjdFR5cGUgID0+IFsnU2VydmljZSddLAogICAgICAgICAgICBGaWVsZEZpbHRlciA9PiAkRHluYW1pY0ZpZWxkRmlsdGVyIHx8IHt9LAogICAgICAgICk7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIEB7JER5bmFtaWNGaWVsZExvb2t1cH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkKTsKCiAgICAgICAgICAgIG15ICRWYWx1ZUdldCA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRWYWx1ZUdldDsKCiAgICAgICAgICAgICMgdXNlIHRyYW5zbGF0aW9uIGhlcmUgdG8gYmUgYWJsZSB0byByZWR1Y2UgdGhlIGNoYXJhY3RlciBsZW5ndGggaW4gdGhlIHRlbXBsYXRlCiAgICAgICAgICAgIG15ICRMYWJlbCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJER5bmFtaWNGaWVsZC0+e0xhYmVsfSApOwoKICAgICAgICAgICAgbXkgJFZhbHVlU3RyZyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWVHZXQsCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgIFZhbHVlTWF4Q2hhcnMgICAgICA9PiAxMzAsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBEeW5hbWljRmllbGRMaXN0LCB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sCiAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICBMaW5rUHJldmlldyAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e0xpbmtQcmV2aWV3fSwKICAgICAgICAgICAgICAgIFRpdGxlRmllbGRDb25maWcgICAgICA9PiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdUaXRsZScgKSA/ICREeW5hbWljRmllbGQtPntDb25maWd9IDogdW5kZWYsCgogICAgICAgICAgICAgICAgIyBJbmNsdWRlIHVuaXF1ZSBwYXJhbWV0ZXIgd2l0aCBkeW5hbWljIGZpZWxkIG5hbWUgaW4gY2FzZSBvZiBjb2xsaXNpb24gd2l0aCBvdGhlcnMuCiAgICAgICAgICAgICAgICAjICAgUGxlYXNlIHNlZSBidWcjMTMzNjIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGQtPntOYW1lfSIgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgb3V0cHV0IGR5bmFtaWMgZmllbGRzCiAgICAgICAgRklFTEQ6CiAgICAgICAgZm9yIG15ICRGaWVsZCAoQER5bmFtaWNGaWVsZExpc3QpIHsKCiAgICAgICAgICAgICMgaGFuZGxlIHRpdGxlcyBzZXBhcmF0ZWx5CiAgICAgICAgICAgIGlmICggJEZpZWxkLT57VGl0bGVGaWVsZENvbmZpZ30gKSB7CiAgICAgICAgICAgICAgICBteSAkU3R5bGUgPSAicGFkZGluZy1sZWZ0OjRweDtmb250LXNpemU6JEZpZWxkLT57VGl0bGVGaWVsZENvbmZpZ317Rm9udFNpemV9cHg7Y29sb3I6JEZpZWxkLT57VGl0bGVGaWVsZENvbmZpZ317Rm9udENvbG9yfTsiOwoKICAgICAgICAgICAgICAgIGlmICggJEZpZWxkLT57VGl0bGVGaWVsZENvbmZpZ317Q0JGb250U3R5bGVVbmRlckxpbmVWYWx1ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFN0eWxlIC49ICJ0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICRGaWVsZC0+e1RpdGxlRmllbGRDb25maWd9e0NCRm9udFN0eWxlSXRhbGljVmFsdWV9ICkgewogICAgICAgICAgICAgICAgICAgICRTdHlsZSAuPSAiZm9udC1zdHlsZTppdGFsaWM7IjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggJEZpZWxkLT57VGl0bGVGaWVsZENvbmZpZ317Q0JGb250U3R5bGVCb2xkVmFsdWV9ICkgewogICAgICAgICAgICAgICAgICAgICRTdHlsZSAuPSAiZm9udC13ZWlnaHQ6Ym9sZDsiOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1RpY2tldER5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFRleHQgICAgICAgPT4gJEZpZWxkLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgICAgICBTdHlsZSAgICAgID0+ICRTdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGVGaWVsZCA9PiAxLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgRklFTEQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU2VydmljZUR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkRmllbGQtPntMYWJlbH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkRmllbGQtPntMaW5rfSApIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NlcnZpY2VEeW5hbWljRmllbGRMaW5rJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJEZpZWxkLT57TmFtZX0gPT4gJEZpZWxkLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICA9PiAkRmllbGQtPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgID0+ICRGaWVsZC0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgICAgPT4gJEZpZWxkLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgIExpbmtQcmV2aWV3ICAgID0+ICRGaWVsZC0+e0xpbmtQcmV2aWV3fSwKCiAgICAgICAgICAgICAgICAgICAgICAgICMgSW5jbHVkZSB1bmlxdWUgcGFyYW1ldGVyIHdpdGggZHluYW1pYyBmaWVsZCBuYW1lIGluIGNhc2Ugb2YgY29sbGlzaW9uIHdpdGggb3RoZXJzLgogICAgICAgICAgICAgICAgICAgICAgICAjICAgUGxlYXNlIHNlZSBidWcjMTMzNjIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfJEZpZWxkLT57TmFtZX0iID0+ICRGaWVsZC0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NlcnZpY2VEeW5hbWljRmllbGRQbGFpbicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRGaWVsZC0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJEZpZWxkLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0Rhc2hib2FyZC9UaWxlU2VydmljZUNhdGFsb2dEeW5hbWljRmllbGRzJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgICAgICk7CgogICAgICAgICMgcmV0dXJuIGNvbXBsZXRlIEhUTUwgYXMgYW4gYXR0YWNobWVudAogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBEb3dubG9hZEF0dGFjaG1lbnQgU3ViYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Rvd25sb2FkQXR0YWNobWVudCcgKSB7CiAgICAgICAgbXkgJEZpbGVJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWxlSUQnICk7CgogICAgICAgIGlmICggIWRlZmluZWQgJEZpbGVJRCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdOZWVkIEZpbGVJRCEnKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgR2V0IGF0dGFjaG1lbnRzLgogICAgICAgIG15ICVGaWxlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKS0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgICAgIEZpbGVJRCAgICA9PiAkRmlsZUlELAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICglRmlsZSkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCglRmlsZSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRGaWxlSUQpISBNYXkgYmUgYW4gYXR0YWNrISEhIiwKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZhdGFsRXJyb3IoKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgIE9QID0+CiAgICAgICAgICAgICJBY3Rpb249Q3VzdG9tZXJEYXNoYm9hcmQiLAogICAgKTsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/CustomerDashboard/TileServiceCatalog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpDdXN0b21lckRhc2hib2FyZDo6VGlsZVNlcnZpY2VDYXRhbG9nOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Okxhbmd1YWdlJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpGQVEnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6UGFja2FnZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTTEEnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6UGFja2FnZScKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMYW5ndWFnZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6TGFuZ3VhZ2UnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRTTEFPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTTEEnKTsKICAgIG15ICRQYWNrYWdlT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQYWNrYWdlJyk7CgogICAgbXkgJERlZmF1bHRUaW1lWm9uZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpLT5PVE9CT1RpbWVab25lR2V0KCk7CgogICAgIyBHZXQgY3VzdG9tZXIgdXNlci4KICAgICRQYXJhbXtDdXN0b21lclVzZXJ9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpLT5DdXN0b21lclVzZXJEYXRhR2V0KAogICAgICAgIFVzZXIgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgT25seSBnZXQgaW5mb3JtYXRpb24gb2YgU0xBcyBvciBjYWxlbmRhcnMgb25jZSBhbmQgc2F2ZSB0aGVtIGluIGhhc2hlcy4KICAgIG15ICVTTEFJRHMgPSAkU0xBT2JqZWN0LT5TTEFMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAjIEdldCBhbGwgU0xBIGFuZCBhc3NvY2lhdGVkIGNhbGVuZGFyIGluZm9ybWF0aW9uLgogICAgbXkgJVNlcnZpY2VMaXN0OwogICAgbXkgJVNMQUxpc3Q7CiAgICBteSAlQ2FsZW5kYXJMaXN0OwogICAgbXkgQFdlZWtEYXlzID0gKCAnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnLCAnU3VuJyApOyAgICAjIEZJWE1FL0ltcHJvdmU6IFdvcmsgd2l0aCBDYWxlbmRhcldlZWtEYXlTdGFydAogICAgZm9yIG15ICRTTEFJRCAoIGtleXMgJVNMQUlEcyApIHsKICAgICAgICBteSAlU0xBRGF0YSA9ICRTTEFPYmplY3QtPlNMQUdldCgKICAgICAgICAgICAgU0xBSUQgID0+ICRTTEFJRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU0xBTGlzdHskU0xBSUR9ID0gXCVTTEFEYXRhOwoKICAgICAgICAjIEdldCBhbGwgc2VydmljZXMgd2hpY2ggdXNlIHRoaXMgU0xBLgogICAgICAgIGZvciBteSAkU2VydmljZUlEICggQHsgJFNMQURhdGF7U2VydmljZUlEc30gfSApIHsKICAgICAgICAgICAgcHVzaCBAeyAkU2VydmljZUxpc3R7JFNlcnZpY2VJRH17U0xBSURzfSB9LCAkU0xBSUQ7CiAgICAgICAgfQoKICAgICAgICAjIENhbGVuZGFyIGRvZXMgbm90IGV4aXN0IHlldC4KICAgICAgICBpZiAoICRTTEFEYXRhe0NhbGVuZGFyfSAmJiAhJENhbGVuZGFyTGlzdHsgJFNMQURhdGF7Q2FsZW5kYXJ9IH0gKSB7CgogICAgICAgICAgICAjIEdldCB0aGUgY2FsZW5kYXIgYW5kIHRoZSB0aW1lIHpvbmUuCiAgICAgICAgICAgIG15ICRDYWxlbmRhciA9ICRDb25maWdPYmplY3QtPkdldCggJ1RpbWVXb3JraW5nSG91cnM6OkNhbGVuZGFyJyAuICRTTEFEYXRhe0NhbGVuZGFyfSApOwogICAgICAgICAgICAkQ2FsZW5kYXItPntUaW1lWm9uZX0gPSAkQ29uZmlnT2JqZWN0LT5HZXQoICdUaW1lWm9uZTo6Q2FsZW5kYXInIC4gJFNMQURhdGF7Q2FsZW5kYXJ9ICkgfHwgJERlZmF1bHRUaW1lWm9uZTsKCiAgICAgICAgICAgICMgR2V0IHdvcmtpbmcgZGF5cyBhbmQgaG91cnMgZm9yIHRoZSB3ZWVrLiBFLmcuOiBNby1GciAxMuKAkzE5LCBTYXQgMTPigJMxOS4KICAgICAgICAgICAgbXkgJVJ1bjsKICAgICAgICAgICAgZm9yIG15ICRJbmRleCAoIDAgLi4gKCBzY2FsYXIgQFdlZWtEYXlzIC0gMSApICkgewogICAgICAgICAgICAgICAgbXkgJERheSA9ICRDYWxlbmRhci0+eyAkV2Vla0RheXNbJEluZGV4XSB9OwoKICAgICAgICAgICAgICAgICMgVGhlIGRheSBoYXMgd29ya2luZyBob3Vycy4KICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCREYXkpICkgewogICAgICAgICAgICAgICAgICAgIG15ICRGaXJzdEhvdXIgPSAkRGF5LT5bMF07CiAgICAgICAgICAgICAgICAgICAgbXkgJExhc3RIb3VyICA9ICREYXktPlstMV07CgogICAgICAgICAgICAgICAgICAgICMgV2UgbmVlZCBvbmUgaG91ciBtb3JlLCBjYXVzZSB0aGUgY2FsZW5kYXIgbWVhbnMgaW5jbHVzaXZlIHRoZSBsYXN0IGhvdXIKICAgICAgICAgICAgICAgICAgICAkTGFzdEhvdXIrKzsKCiAgICAgICAgICAgICAgICAgICAgIyBGaXJzdCBkYXkgb2YgdGhlIHJ1bi4KICAgICAgICAgICAgICAgICAgICBpZiAoICEkUnVue1N0YXJ0RGF5fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFJ1bntTdGFydERheX0gID0gJFdlZWtEYXlzWyRJbmRleF07CiAgICAgICAgICAgICAgICAgICAgICAgICRSdW57Rmlyc3RIb3VyfSA9ICRGaXJzdEhvdXI7CiAgICAgICAgICAgICAgICAgICAgICAgICRSdW57TGFzdEhvdXJ9ICA9ICRMYXN0SG91cjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgVGhlIGN1cnJlbnQgZGF0ZSBoYXMgZGlmZmVyZW50IHdvcmtpbmcgaG91cnMgdGhhbiB0aGUgbGFzdCBkYXkgb2YgdGhlIHJ1bi4KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRGaXJzdEhvdXIgIT0gJFJ1bntGaXJzdEhvdXJ9IHx8ICRMYXN0SG91ciAhPSAkUnVue0xhc3RIb3VyfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgU2V0IHRoZSBsYXN0IGRheSB0byB5ZXN0ZXJkYXkgYW5kIHJlc2V0IHRoZSBydW4uCiAgICAgICAgICAgICAgICAgICAgICAgICRSdW57TGFzdERheX0gPSAkV2Vla0RheXNbICggJEluZGV4IC0gMSApIF07CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHsgJENhbGVuZGFyLT57V29ya2luZ0hvdXJzfSB9LCB7JVJ1bn07CiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmICVSdW47CgogICAgICAgICAgICAgICAgICAgICAgICAkUnVue1N0YXJ0RGF5fSAgPSAkV2Vla0RheXNbJEluZGV4XTsKICAgICAgICAgICAgICAgICAgICAgICAgJFJ1bntGaXJzdEhvdXJ9ID0gJEZpcnN0SG91cjsKICAgICAgICAgICAgICAgICAgICAgICAgJFJ1bntMYXN0SG91cn0gID0gJExhc3RIb3VyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICMgTm8gZGF0YSBmb3IgdGhlIGRheS4gQ2hlY2sgaWYgdGhlIHJ1biBuZWVkcyB0byBiZSBzdG9wcGVkLgogICAgICAgICAgICAgICAgICAgIGlmICggJFJ1bntTdGFydERheX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRSdW57TGFzdERheX0gPSAkV2Vla0RheXNbICggJEluZGV4IC0gMSApIF07CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHsgJENhbGVuZGFyLT57V29ya2luZ0hvdXJzfSB9LCB7JVJ1bn07CiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmICVSdW47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgSXQncyB0aGUgbGFzdCBkYXkgb2YgdGhlIHdlZWsuCiAgICAgICAgICAgICAgICBpZiAoICRJbmRleCA9PSA2ICkgewoKICAgICAgICAgICAgICAgICAgICAjIElmIHRoZSBydW4gaXMgc3RpbGwgZ29pbmcgb24sIGNsb3NlIGl0LgogICAgICAgICAgICAgICAgICAgIGlmICggJFJ1bntTdGFydERheX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRSdW57TGFzdERheX0gPSAkV2Vla0RheXNbJEluZGV4XTsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyAkQ2FsZW5kYXItPntXb3JraW5nSG91cnN9IH0sIHslUnVufTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRDYWxlbmRhckxpc3R7ICRTTEFEYXRhe0NhbGVuZGFyfSB9ID0gJENhbGVuZGFyOwogICAgICAgIH0KICAgIH0KCiAgICAjIEl0ZXJhdGUgdGhyb3VnaCBhbGwgYXZhbGlhYmxlIHNlcnZpY2VzIGFuZCBmaWx0ZXIgb3V0IHRoZSBzZXZpY2VzIGFuZCBwYXJhbWV0ZXJzIHdlIG5lZWQuCiAgICBteSAkU2VydmljZUxpc3RSZWZBcnJheSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyktPlNlcnZpY2VMaXN0R2V0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICBteSAlU2VydmljZUxpc3RSZWY7CgogICAgbXkgJVR5cGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKS0+VHlwZUxpc3QoCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7CgogICAgIyBHZXQgYWxsIHNlcnZpY2UgSURzIG9mIHRoZSBjdXN0b21lci4KICAgIG15ICVTZXJ2aWNlSURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpLT5UaWNrZXRTZXJ2aWNlTGlzdCgKICAgICAgICBBY3Rpb24gICAgICAgICA9PiAnQ3VzdG9tZXJEYXNoYm9hcmQnLAogICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgIFF1ZXVlSUQgICAgICAgID0+IDEsCiAgICApOwoKICAgIG15ICRTZXR0aW5ncyA9ICRDb25maWdPYmplY3QtPkdldCgnQ3VzdG9tZXJEYXNoYm9hcmQ6OkNvbmZpZ3VyYXRpb246OlNlcnZpY2VDYXRhbG9nJykgfHwge307CiAgICBTRVJWSUNFUkVGOgogICAgZm9yIG15ICRTZXJ2aWNlUmVmICggQHskU2VydmljZUxpc3RSZWZBcnJheX0gKSB7CiAgICAgICAgJFNlcnZpY2VMaXN0UmVmeyAkU2VydmljZVJlZi0+e1NlcnZpY2VJRH0gfSA9ICRTZXJ2aWNlUmVmOwoKICAgICAgICAjIENoZWNrIGlmIHRoZSBjdXN0b21lciBoYXMgcGVybWlzc2lvbiBvbiB0aGlzIHNlcnZpY2UuCiAgICAgICAgbmV4dCBTRVJWSUNFUkVGIGlmICEkU2VydmljZUlEc3sgJFNlcnZpY2VSZWYtPntTZXJ2aWNlSUR9IH07CiAgICAgICAgbXkgJVNlcnZpY2UgPSAoKTsKCiAgICAgICAgIyBHZXQgYWxsIG5lZWRlZCBwYXJhbWV0ZXJzCiAgICAgICAgZm9yIG15ICROZWVkZWQgKHF3KFNlcnZpY2VJRCBOYW1lU2hvcnQgRGVzY3JpcHRpb25zIFRpY2tldFR5cGVJRHMgUGFyZW50SUQgS2V5d29yZHMpKSB7CiAgICAgICAgICAgIGlmICggJFNlcnZpY2VSZWYtPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgICAgIGlmICggJE5lZWRlZCBlcSAnVGlja2V0VHlwZUlEcycgKSB7CgogICAgICAgICAgICAgICAgICAgICMgR2V0IG5hbWVzIG9mIGFsbCBhc3NpZ25lZCB0eXBlcy4KICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFR5cGVJRCAoIEB7ICRTZXJ2aWNlUmVmLT57JE5lZWRlZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFR5cGVOYW1lID0gJExhbmd1YWdlT2JqZWN0LT5UcmFuc2xhdGUoICRUeXBlTGlzdHskVHlwZUlEfSApOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBDaGVjayBpZiB0aGUgYXNzaWduZWQgdHlwZSBJRCBpcyBzdGlsbCB2YWxpZC4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRUeXBlTmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNlcnZpY2V7VGlja2V0VHlwZX17JFR5cGVOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRCAgICAgID0+ICRUeXBlSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NlcyA9PiAkU2V0dGluZ3MtPnsgJFR5cGVMaXN0eyRUeXBlSUR9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNpZiAoICROZWVkZWQgZXEgJ0Rlc2NyaXB0aW9ucycgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlcnZpY2V7RGVzY3JpcHRpb25TaG9ydH0gPSAkU2VydmljZVJlZi0+eyROZWVkZWR9LT57JExheW91dE9iamVjdC0+e1VzZXJMYW5ndWFnZX19LT57RGVzY3JpcHRpb25TaG9ydH0gfHwgCiAgICAgICAgICAgICAgICAgICAgICAgICRTZXJ2aWNlUmVmLT57JE5lZWRlZH0tPnskS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0RlZmF1bHRMYW5ndWFnZScpfS0+e0Rlc2NyaXB0aW9uU2hvcnR9IHx8IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNlcnZpY2VSZWYtPnskTmVlZGVkfS0+eydlbid9LT57RGVzY3JpcHRpb25TaG9ydH0gfHwgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnRGVzY3JpcHRpb24gbm90IGF2YWlsYWJsZS4nICk7CgogICAgICAgICAgICAgICAgICAgICRTZXJ2aWNle0Rlc2NyaXB0aW9uTG9uZ30gPSAkU2VydmljZVJlZi0+eyROZWVkZWR9LT57JExheW91dE9iamVjdC0+e1VzZXJMYW5ndWFnZX19LT57RGVzY3JpcHRpb25Mb25nfSB8fCAKICAgICAgICAgICAgICAgICAgICAgICAgJFNlcnZpY2VSZWYtPnskTmVlZGVkfS0+eyRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRGVmYXVsdExhbmd1YWdlJyl9LT57RGVzY3JpcHRpb25Mb25nfSB8fCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTZXJ2aWNlUmVmLT57JE5lZWRlZH0tPnsnZW4nfS0+e0Rlc2NyaXB0aW9uTG9uZ30gfHwgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnRGVzY3JpcHRpb24gbm90IGF2YWlsYWJsZS4nICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkU2VydmljZXskTmVlZGVkfSA9ICRTZXJ2aWNlUmVmLT57JE5lZWRlZH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgR2V0IGFsbCBjYWxlbmRhciBhbmQgU0xBIGluZm9ybWF0aW9uIGZvciB0aGlzIHNlcnZpY2UuCiAgICAgICAgbXkgJFNMQUlEcyA9ICRTZXJ2aWNlTGlzdHsgJFNlcnZpY2V7U2VydmljZUlEfSB9e1NMQUlEc307CgogICAgICAgIG15ICVEb250U2V0OwogICAgICAgIFNMQUlEOgogICAgICAgIGZvciBteSAkU0xBSUQgKCBAeyRTTEFJRHN9ICkgewogICAgICAgICAgICBteSAkU0xBICAgICAgPSAkU0xBTGlzdHskU0xBSUR9OwogICAgICAgICAgICBteSAkQ2FsZW5kYXIgPSAkQ2FsZW5kYXJMaXN0eyAkU0xBLT57Q2FsZW5kYXJ9IH07CgogICAgICAgICAgICAjIFRoaXMgc2VydmljZSBpcyBsaW5rZWQgdG8gYXQgbGVhc3QgdHdvIFNMQXMgd2l0aCBkaWZmZXJlbnQgZmlyc3QgcmVzcG9uc2UgdGltZXMuCiAgICAgICAgICAgIGlmICggJFNlcnZpY2V7Rmlyc3RSZXNwb25zZVRpbWV9ICYmICRTZXJ2aWNle0ZpcnN0UmVzcG9uc2VUaW1lfSBuZSAkU0xBLT57Rmlyc3RSZXNwb25zZVRpbWV9ICkgewogICAgICAgICAgICAgICAgdW5kZWYgJFNlcnZpY2V7Rmlyc3RSZXNwb25zZVRpbWV9OwogICAgICAgICAgICAgICAgJERvbnRTZXR7Rmlyc3RSZXNwb25zZVRpbWV9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICEkRG9udFNldHtGaXJzdFJlc3BvbnNlVGltZX0gKSB7CiAgICAgICAgICAgICAgICAkU2VydmljZXtGaXJzdFJlc3BvbnNlVGltZX0gPSAkU0xBLT57Rmlyc3RSZXNwb25zZVRpbWV9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFRoaXMgc2VydmljZSBpcyBsaW5rZWQgdG8gYXQgbGVhc3QgdHdvIFNMQXMgd2l0aCBkaWZmZXJlbnQgc29sdXRpb24gdGltZXMuCiAgICAgICAgICAgIGlmICggJFNlcnZpY2V7U29sdXRpb25UaW1lfSAmJiAkU2VydmljZXtTb2x1dGlvblRpbWV9IG5lICRTTEEtPntTb2x1dGlvblRpbWV9ICkgewogICAgICAgICAgICAgICAgdW5kZWYgJFNlcnZpY2V7U29sdXRpb25UaW1lfTsKICAgICAgICAgICAgICAgICREb250U2V0e1NvbHV0aW9uVGltZX0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggISREb250U2V0e1NvbHV0aW9uVGltZX0gKSB7CiAgICAgICAgICAgICAgICAkU2VydmljZXtTb2x1dGlvblRpbWV9ID0gJFNMQS0+e1NvbHV0aW9uVGltZX07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgU0xBIGRvZXMgbm90IGhhdmUgYSBjYWxlbmRhci4KICAgICAgICAgICAgbmV4dCBTTEFJRCBpZiAhJENhbGVuZGFyOwoKICAgICAgICAgICAgIyBUaGlzIHNlcnZpY2UgaXMgbGlua2VkIHRvIGF0IGxlYXN0IHR3byBTTEEgY2FsZW5kYXJzIHdpdGggZGlmZmVyZW50IHRpbWUgem9uZXMuCiAgICAgICAgICAgIGlmICggJFNlcnZpY2V7VGltZVpvbmV9ICYmICRDYWxlbmRhci0+e1RpbWVab25lfSAmJiAkU2VydmljZXtUaW1lWm9uZX0gbmUgJENhbGVuZGFyLT57VGltZVpvbmV9ICkgewogICAgICAgICAgICAgICAgdW5kZWYgJFNlcnZpY2V7VGltZVpvbmV9OwogICAgICAgICAgICAgICAgdW5kZWYgJFNlcnZpY2V7V29ya2luZ0hvdXJzfTsKICAgICAgICAgICAgICAgICREb250U2V0e1RpbWVab25lfSAgICAgPSAxOwogICAgICAgICAgICAgICAgJERvbnRTZXR7V29ya2luZ0hvdXJzfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAhJERvbnRTZXR7VGltZVpvbmV9ICkgewogICAgICAgICAgICAgICAgJFNlcnZpY2V7VGltZVpvbmV9ID0gJENhbGVuZGFyLT57VGltZVpvbmV9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFRoaXMgc2VydmljZSBpcyBsaW5rZWQgdG8gYXQgbGVhc3QgdHdvIGRpZmZlcmVudCBjYWxlbmRhcnMuCiAgICAgICAgICAgIGlmICggJFNlcnZpY2V7V29ya2luZ0hvdXJzfSApIHsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGlmIHdvcmtpbmcgaG91cnMgYXJlIHRoZSBzYW1lLgogICAgICAgICAgICAgICAgSU5ERVg6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEluZGV4ICggMCAuLiAoIHNjYWxhciBAeyAkU2VydmljZXtXb3JraW5nSG91cnN9IH0gLSAxICkgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAhJFNlcnZpY2V7V29ya2luZ0hvdXJzfVskSW5kZXhdIHx8ICEkQ2FsZW5kYXItPntXb3JraW5nSG91cnN9WyRJbmRleF0gICAgIyBDaGVjayBpZiBydW5zIGV4aXN0LgogICAgICAgICAgICAgICAgICAgICAgICB8fCAkI3sgJFNlcnZpY2V7V29ya2luZ0hvdXJzfSB9ICE9ICQjeyAkQ2FsZW5kYXItPntXb3JraW5nSG91cnN9IH0gICAgICAgIyBPbmUgcnVuIGlzIGxvbmdlciBvciBzaG9ydGVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDaGVjayBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgdmFsdWVzLgogICAgICAgICAgICAgICAgICAgICAgICB8fCAkU2VydmljZXtXb3JraW5nSG91cnN9WyRJbmRleF17U3RhcnREYXl9IG5lICRDYWxlbmRhci0+e1dvcmtpbmdIb3Vyc31bJEluZGV4XXtTdGFydERheX0KICAgICAgICAgICAgICAgICAgICAgICAgfHwgJFNlcnZpY2V7V29ya2luZ0hvdXJzfVskSW5kZXhde0xhc3REYXl9IG5lICRDYWxlbmRhci0+e1dvcmtpbmdIb3Vyc31bJEluZGV4XXtMYXN0RGF5fQogICAgICAgICAgICAgICAgICAgICAgICB8fCAkU2VydmljZXtXb3JraW5nSG91cnN9WyRJbmRleF17Rmlyc3RIb3VyfSBuZSAkQ2FsZW5kYXItPntXb3JraW5nSG91cnN9WyRJbmRleF17Rmlyc3RIb3VyfQogICAgICAgICAgICAgICAgICAgICAgICB8fCAkU2VydmljZXtXb3JraW5nSG91cnN9WyRJbmRleF17TGFzdEhvdXJ9IG5lICRDYWxlbmRhci0+e1dvcmtpbmdIb3Vyc31bJEluZGV4XXtMYXN0SG91cn0KICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYgJFNlcnZpY2V7V29ya2luZ0hvdXJzfTsKICAgICAgICAgICAgICAgICAgICAgICAgJERvbnRTZXR7V29ya2luZ0hvdXJzfSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgSU5ERVg7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggISREb250U2V0e1dvcmtpbmdIb3Vyc30gKSB7CiAgICAgICAgICAgICAgICAkU2VydmljZXtXb3JraW5nSG91cnN9ID0gJENhbGVuZGFyLT57V29ya2luZ0hvdXJzfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayBpZiBGQVEgbW9kdWwgaXMgaW5zdGFsbGVkLCBpZiB5ZXMgd2UgY2hlY2sgc2VydmljZSByZWxhdGVkIGZhcSBtZXNzYWdlcwogICAgICAgIG15ICRGQVFJbnN0YWxsZWQgPSAkUGFja2FnZU9iamVjdC0+UGFja2FnZUlzSW5zdGFsbGVkKAogICAgICAgICAgICBOYW1lID0+ICdGQVEnLAogICAgICAgICk7CgogICAgICAgICMgRkFRIHBhY2thZ2UgaXMgaW5zdGFsbGVkCiAgICAgICAgaWYgKCRGQVFJbnN0YWxsZWQpIHsKCiAgICAgICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICAgICAjIEdldCBGQVEgaW50ZXJmYWNlIHN0YXRlIGxpc3QKICAgICAgICAgICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgICAgICAgICBUeXBlcyAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkN1c3RvbWVyOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEdldCBhbGwgbGlua2VkIEZBUSBhcnRpY2xlcy4KICAgICAgICAgICAgbXkgJUxpbmtLZXlMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0tleUxpc3QoCiAgICAgICAgICAgICAgICBPYmplY3QxID0+ICdTZXJ2aWNlJywKICAgICAgICAgICAgICAgIEtleTEgICAgPT4gJFNlcnZpY2V7U2VydmljZUlEfSwKICAgICAgICAgICAgICAgIE9iamVjdDIgPT4gJ0ZBUScsCiAgICAgICAgICAgICAgICBTdGF0ZSAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEZvciBlYWNoIExpbmtLZXlMaXN0LCBnZXQgdGhlIEZBUSBhcnRpY2xlLgogICAgICAgICAgICBmb3IgbXkgJExpbmtLZXkgKCBrZXlzICVMaW5rS2V5TGlzdCApIHsKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJExpbmtLZXksCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlIHVzZXIgaGFzIHBlcm1pc3Npb24gdG8gc2VlIHRoaXMgRkFRLgogICAgICAgICAgICAgICAgbXkgQFZhbGlkSURzICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRJRHNHZXQoKTsKICAgICAgICAgICAgICAgIG15ICVWYWxpZElETG9va3VwID0gbWFwIHsgJF8gPT4gMSB9IEBWYWxpZElEczsKCiAgICAgICAgICAgICAgICAjIENoZWNrIHVzZXIgcGVybWlzc2lvbgogICAgICAgICAgICAgICAgbXkgJFBlcm1pc3Npb24gPSAkRkFRT2JqZWN0LT5DaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeUlEICAgPT4gJEZBUURhdGF7Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIFBlcm1pc3Npb24gY2hlY2sKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkUGVybWlzc2lvbgogICAgICAgICAgICAgICAgICAgICYmICRGQVFEYXRhe0FwcHJvdmVkfQogICAgICAgICAgICAgICAgICAgICYmICRWYWxpZElETG9va3VweyAkRkFRRGF0YXtWYWxpZElEfSB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEludGVyZmFjZVN0YXRlcy0+eyAkRkFRRGF0YXtTdGF0ZVR5cGVJRH0gfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAjIEZpbHRlciBvdXQgaW5mb3JtYXRpb24gd2UgZG9uJ3QgbmVlZC4KICAgICAgICAgICAgICAgICAgICBteSAlRmlsdGVyZWRGQVFEYXRhID0gKCk7CgogICAgICAgICAgICAgICAgICAgICMgR2V0IHRoZSBjb25maWcgZm9yIHRoZSBGQVEgZmllbGRzIHdlIHdhbnQgdG8gZGlzcGxheS4KICAgICAgICAgICAgICAgICAgICBteSAkRGVzY3JpcHRpb25GaWVsZFRvRGlzcGxheSA9ICRTZXR0aW5ncy0+e0ZBUURlc2NyaXB0aW9uRmllbGR9IHx8ICdGaWVsZDEnOwogICAgICAgICAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAoICggJ0l0ZW1JRCcsICdUaXRsZScsICREZXNjcmlwdGlvbkZpZWxkVG9EaXNwbGF5LCAnQ2F0ZWdvcnlOYW1lJyApICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAhJEZBUURhdGF7JEtleX07CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRLZXkgZXEgJERlc2NyaXB0aW9uRmllbGRUb0Rpc3BsYXkgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBSZW1vdmUgSFRNTCB0YWdzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZpbHRlcmVkRkFRRGF0YXtEZXNjcmlwdGlvbn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nID0+ICRGQVFEYXRheyRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIElmIHRoZSBmaWVsZCBpcyBsb25nZXIgdGhhbiA3MCBjaGFyYWN0ZXJzLCBhZGQgYW4gZWxsaXBzaXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGxlbmd0aCggJEZpbHRlcmVkRkFRRGF0YXtEZXNjcmlwdGlvbn0gKSA+IDQ1ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGaWx0ZXJlZEZBUURhdGF7RGVzY3JpcHRpb259ID0gc3Vic3RyKCAkRmlsdGVyZWRGQVFEYXRhe0Rlc2NyaXB0aW9ufSwgMCwgNDUgKSAuICcuLi4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZpbHRlcmVkRkFRRGF0YXskS2V5fSA9ICRGQVFEYXRheyRLZXl9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHB1c2ggQHsgJFNlcnZpY2V7RkFRc30gfSwgXCVGaWx0ZXJlZEZBUURhdGE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgU2F2ZSB0aGUgc2VydmljZSBpbiBhIGxpc3QuCiAgICAgICAgJFNlcnZpY2VMaXN0eyAkU2VydmljZXtTZXJ2aWNlSUR9IH0gPSBcJVNlcnZpY2U7CiAgICB9CgogICAgIyBBZGQgc3VwcG9ydCBmb3IgZHluYW1pYyBmaWVsZHMuCiAgICBteSAkRHluYW1pY0ZpZWxkRmlsdGVyID0gewogICAgICAgICV7ICRDb25maWdPYmplY3QtPkdldCgiQ3VzdG9tZXJEYXNoYm9hcmQ6OkNvbmZpZ3VyYXRpb246OlNlcnZpY2VDYXRhbG9nIiktPntEeW5hbWljRmllbGR9IHx8IHt9IH0sCiAgICB9OwoKICAgICMgR2V0IGR5bmFtaWMgZmllbGRzIGZvciBzZXJ2aWNlIG9iamVjdC4KICAgIG15ICREeW5hbWljRmllbGRMb29rdXAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlICA9PiBbJ1NlcnZpY2UnXSwKICAgICAgICBGaWVsZEZpbHRlciA9PiAkRHluYW1pY0ZpZWxkRmlsdGVyIHx8IHt9LAogICAgKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgR2V0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlcyBmb3IgZXZlcnkgc2VydmljZS4KICAgIGZvciBteSAkU2VydmljZUlEICgga2V5cyAlU2VydmljZUxpc3QgKSB7CiAgICAgICAgbXkgQER5bmFtaWNGaWVsZExpc3Q7CgogICAgICAgICMgIyBHZXQgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWVzIGZvciB0aGlzIHNlcnZpY2UuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskRHluYW1pY0ZpZWxkTG9va3VwfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBHZXQgdGhlIGxhYmVsOwogICAgICAgICAgICBteSAkTGFiZWwgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwoKICAgICAgICAgICAgIyBHZXQgZmllbGQgdmFsdWUuCiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDEzMCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgU2V0IGZpZWxkIHZhbHVlLgogICAgICAgICAgICBpZiAoICRMYWJlbCAmJiAkVmFsdWVTdHJnLT57VmFsdWV9ICkgewogICAgICAgICAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkTGlzdCwgewogICAgICAgICAgICAgICAgICAgICRWYWx1ZVN0cmctPiUqLAogICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgQWRkIHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlcyB0byB0aGUgc2VydmljZS4KICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggXEBEeW5hbWljRmllbGRMaXN0ICkgKSB7CiAgICAgICAgICAgICRTZXJ2aWNlTGlzdHskU2VydmljZUlEfS0+e0R5bmFtaWNGaWVsZH0gPSBcQER5bmFtaWNGaWVsZExpc3Q7CiAgICAgICAgfQogICAgfQoKICAgICMgR2V0IHRoZSBiYXNpYyBpbmZvcm1hdGlvbiBmb3IgZXZlcnkgcGFyZW50IFNlcnZpY2UsIGV2ZW4gaWYgdGhlIHRoZSBjdXN0b21lciB1c2VyIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBzZWUgaXQuCiAgICBTRVJWSUNFSUQ6CiAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIGtleXMgJVNlcnZpY2VMaXN0ICkgewogICAgICAgIG15ICRQYXJlbnRJRCA9ICRTZXJ2aWNlTGlzdHskU2VydmljZUlEfXtQYXJlbnRJRH07CiAgICAgICAgbmV4dCBTRVJWSUNFSUQgaWYgISRQYXJlbnRJRDsKCiAgICAgICAgaWYgKCAkU2VydmljZUxpc3R7JFBhcmVudElEfSAmJiAkU2VydmljZUxpc3R7JFBhcmVudElEfXtTZXJ2aWNlSUR9ICkgewogICAgICAgICAgICBuZXh0IFNFUlZJQ0VJRDsKICAgICAgICB9CgogICAgICAgICMgR2V0IHN1cmUgdGhhdCB3ZSBjYW4gc2VsZWN0IGV2ZXJ5IHN1YnNlcnZpY2Ugb2YgdGhpcyBzZXJ2aWNlLgogICAgICAgIFNFUlZJQ0VEQVRBOgogICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIG15ICVTZXJ2aWNlID0gKCk7CgogICAgICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoU2VydmljZUlEIE5hbWVTaG9ydCBEZXNjcmlwdGlvblNob3J0IERlc2NyaXB0aW9uTG9uZyBQYXJlbnRJRCkpIHsKICAgICAgICAgICAgICAgIGlmICggJFNlcnZpY2VMaXN0UmVmeyRQYXJlbnRJRH17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlcnZpY2V7JE5lZWRlZH0gPSAkU2VydmljZUxpc3RSZWZ7JFBhcmVudElEfXskTmVlZGVkfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFNlcnZpY2V7Tm90U2VsZWN0YWJsZX0gICAgICAgICAgICAgPSAxOwogICAgICAgICAgICAkU2VydmljZUxpc3R7ICRTZXJ2aWNle1NlcnZpY2VJRH0gfSA9IFwlU2VydmljZTsKICAgICAgICAgICAgJFBhcmVudElEICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAkU2VydmljZXtQYXJlbnRJRH07CgogICAgICAgICAgICAjIFBhcmVudCByZWFjaGVkLgogICAgICAgICAgICBpZiAoICEkU2VydmljZXtQYXJlbnRJRH0gfHwgKCAkU2VydmljZUxpc3R7JFBhcmVudElEfSAmJiAkU2VydmljZUxpc3R7JFBhcmVudElEfXtTZXJ2aWNlSUR9ICkgKSB7CiAgICAgICAgICAgICAgICBsYXN0IFNFUlZJQ0VEQVRBOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKCiAgICAjIFRPRE86IE5hbWVzIGhhdmUgdG8gYmUgdHJhbnNsYXRlZCBzb21ld2hlcmUgZm9yIHRoZSBicmVhZGNydW1iLCB3ZSBuZWVkIHRvIHByZXZlbnQgdHJhbnNsYXRpb24gb2YgdGhvc2UgdHJhbnNsYXRlZCB2YWx1ZXMKICAgIGZvciBteSAkU2VydmljZUlEICgga2V5cyAlU2VydmljZUxpc3QgKSB7CiAgICAgICAgJFNlcnZpY2VMaXN0eyRTZXJ2aWNlSUR9e05hbWVTaG9ydH0gPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlID0+ICdbJSAgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdJywKICAgICAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSA9PiAkU2VydmljZUxpc3R7JFNlcnZpY2VJRH17TmFtZVNob3J0fSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgU2hvdyBhbGwgZmlyc3QgbGV2ZWwgc2VydmljZXMsIHNvcnRlZCBieSB0aGUgbmFtZS4KICAgIG15ICVQYXJlbnRJRHM7CiAgICBTRVJWSUNFSUQ6CiAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIGtleXMgJVNlcnZpY2VMaXN0ICkgewogICAgICAgIG5leHQgU0VSVklDRUlEIGlmICRTZXJ2aWNlTGlzdHskU2VydmljZUlEfXtQYXJlbnRJRH07CgogICAgICAgICMgT25lIG9mIHRoZXNlIGNhbiBiZSB1bmRlZiBpZiB0aGUgcGFyZW50IHNlcnZpY2UgaXMgZGlzYWJsZWQuCiAgICAgICAgbmV4dCBTRVJWSUNFSUQgaWYgISRTZXJ2aWNlTGlzdHskU2VydmljZUlEfTsKICAgICAgICBuZXh0IFNFUlZJQ0VJRCBpZiAhJFNlcnZpY2VMaXN0eyRTZXJ2aWNlSUR9e05hbWVTaG9ydH07CgogICAgICAgICRQYXJlbnRJRHN7JFNlcnZpY2VJRH0gPSAkU2VydmljZUxpc3R7JFNlcnZpY2VJRH17TmFtZVNob3J0fTsKICAgIH0KCiAgICBteSAlUmV2ZXJzZWRQYXJlbnRJRHMgPSByZXZlcnNlICVQYXJlbnRJRHM7CiAgICBteSAkTnVtYmVyT2ZTZXJ2aWNlcyAgPSAwOwogICAgU0VSVklDRU5BTUU6CiAgICBmb3IgbXkgJFNlcnZpY2VOYW1lICggc29ydCB2YWx1ZXMgJVBhcmVudElEcyApIHsKICAgICAgICBteSAkU2VydmljZUlEID0gJFJldmVyc2VkUGFyZW50SURzeyRTZXJ2aWNlTmFtZX07CiAgICAgICAgbmV4dCBTRVJWSUNFTkFNRSBpZiAhJFNlcnZpY2VJRDsKICAgICAgICAkTnVtYmVyT2ZTZXJ2aWNlcysrOwoKICAgICAgICBpZiAoICROdW1iZXJPZlNlcnZpY2VzIDw9IDMgKSB7CgogICAgICAgICAgICAjIENyZWF0ZSB0aGUgcGFyZW50IGxpc3QuCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUGFyZW50U2VydmljZScsCiAgICAgICAgICAgICAgICBEYXRhID0+ICRTZXJ2aWNlTGlzdHskU2VydmljZUlEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkTnVtYmVyT2ZTZXJ2aWNlcyA+PSA0ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQYXJlbnRTZXJ2aWNlTW9yZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyT2ZTZXJ2aWNlcyA9PiAkTnVtYmVyT2ZTZXJ2aWNlcyAtIDMsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIENyZWF0ZSBuYXZpZ2F0aW9uIGZpZWxkIGZvciBzZXJ2aWNlcy4KICAgICRTZXJ2aWNlSURzeydBbGwnfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQWxsJyk7CiAgICBteSAkU2VydmljZVN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVTZXJ2aWNlSURzLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnU2VydmljZUlEJywKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSAnLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIFRyZWVWaWV3ICAgICA9PiAxLAogICAgICAgIFNvcnQgICAgICAgICA9PiAnVHJlZVZpZXcnLAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgIE1heCAgICAgICAgICA9PiAyMDAsCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnU2VydmljZUxpc3QnLAogICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPkpTT05FbmNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gXCVTZXJ2aWNlTGlzdCwKICAgICAgICApLAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ1NlcnZpY2VTdHJnJywKICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKAogICAgICAgICAgICBEYXRhID0+ICRTZXJ2aWNlU3RyZywKICAgICAgICApLAogICAgKTsKCiAgICBpZiAoICRTZXR0aW5ncy0+e1NvcnRCeVRpY2tldFR5cGV9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgS2V5ICAgPT4gJ1NvcnRCeVRpY2tldFR5cGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGFuZ3VhZ2VPYmplY3QtPlRyYW5zbGF0ZSggJFNldHRpbmdzLT57U29ydEJ5VGlja2V0VHlwZX0gKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDb250ZW50ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnRGFzaGJvYXJkL1RpbGVTZXJ2aWNlQ2F0YWxvZycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgVGlsZUlEID0+ICRQYXJhbXtUaWxlSUR9LAogICAgICAgICAgICAleyAkUGFyYW17Q29uZmlnfSB9LAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAkQ29udGVudDsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AdminServiceImportExport.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIFpudW55IEdtYkgsIGh0dHA6Ly96bnVueS5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckZpcnN0Ij4KCiAgICBbJQogICAgICAgIFNFVCBUeXBlICA9IFRyYW5zbGF0ZShEYXRhLlR5cGUpOwogICAgICAgIFNFVCBMYWJlbCA9IFRyYW5zbGF0ZSgiU2VydmljZXMiKTsKICAgICVdCgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCIlcyAtICVzIixMYWJlbCwgVHlwZSksCiAgICAgICAgICAgIH0sCiAgICAgICAgXQogICAgJV0KCiAgICBbJSBJTkNMVURFICJCcmVhZGNydW1iLnR0IiBQYXRoID0gQnJlYWRjcnVtYlBhdGggJV0KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkFjdGlvbk92ZXJ2aWV3IikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pblNlcnZpY2UiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPSJmYSBmYS1wbHVzLXNxdWFyZSI+PC9pPlslIFRyYW5zbGF0ZSgiU2VydmljZXMiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25PdmVydmlldyIpICVdCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkhpbnQiKSB8IGh0bWwgJV0gLSBbJSBUcmFuc2xhdGUoRGF0YS5UeXBlKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgPGI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlNlbGVjdCB0aGUgaXRlbXMgeW91IHdhbnQgdG8gIikgfCBodG1sICVdIFslIFRyYW5zbGF0ZShEYXRhLlR5cGUpIHwgaHRtbCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9iPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2JyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbXBvcnRIaW50IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJTZWxlY3QgdGhlIGRlc2lyZWQgZWxlbWVudHMgYW5kIGNvbmZpcm0gdGhlIGltcG9ydCB3aXRoICdpbXBvcnQnLiIpIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSW1wb3J0SGludCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkV4cG9ydEhpbnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkhlcmUgeW91IGNhbiBleHBvcnQgYSBjb25maWd1cmF0aW9uIGZpbGUgb2Ygc2VydmljZXMgdG8gaW1wb3J0IHRoZXNlIG9uIGFub3RoZXIgc3lzdGVtLiBUaGUgY29uZmlndXJhdGlvbiBmaWxlIGlzIGV4cG9ydGVkIGluIHltbCBmb3JtYXQuIikgfCBodG1sICVdClslIFJlbmRlckJsb2NrRW5kKCJFeHBvcnRIaW50IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiU2VydmljZXMgTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQgTGF5b3V0R3JpZCBDb2x1bW5zV2l0aFNwYWNpbmciPgoKICAgICAgICAgICAgICAgIDxmb3JtIGlkPSdGb3JtJyBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJbJSBFbnYoIlN1YmFjdGlvbiIpICVdQWN0aW9uIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iVHlwZSIgdmFsdWU9IlslIERhdGEuVHlwZSB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzIiAgdmFsdWU9IlslIERhdGEuT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllcyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIiBpZD0iU2VydmljZXNUYWJsZSIgc3VtbWFyeT0iTGlzdCBvZiBhbGwgcmVnaXN0ZXJlZCBTZXJ2aWNlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9J0NlbnRlcic+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iU2VsZWN0QWxsU2VydmljZXMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoJ1RvZ2dsZSBhbGwgYXZhaWxhYmxlIGVsZW1lbnRzJykgfCBodG1sICVdIiBjaGVja2VkIHZhbHVlPSIiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRmllbGRzIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNlcnZpY2VzUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBpZD0iU2VydmljZUlEX1slIERhdGEuU2VydmljZUlEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSdDZW50ZXInPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXJ2aWNlQ2hlY2tib3giKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJTZXJ2aWNlcyIgbmFtZT0iU2VydmljZXMiIHZhbHVlPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBjaGVja2VkIC8+ClslIFJlbmRlckJsb2NrRW5kKCJTZXJ2aWNlQ2hlY2tib3giKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbXBvcnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk5hbWUgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkltcG9ydCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkV4cG9ydCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pblNlcnZpY2U7U3ViYWN0aW9uPUNoYW5nZTtTZXJ2aWNlSUQ9WyUgRGF0YS5TZXJ2aWNlSUQgfCB1cmkgJV0iIHRpdGxlPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uTGluayI+WyUgRGF0YS5OYW1lICVdPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiRXhwb3J0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBUcmFuc2xhdGUoRGF0YS5Db21tZW50KSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBUcmFuc2xhdGUoRGF0YS5WYWxpZCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJTZXJ2aWNlc1JvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdHlwZT0ic3VibWl0IiBpZD0iRXhwb3J0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKERhdGEuVHlwZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZShEYXRhLlR5cGUpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluU2VydmljZSIgPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AdminSLAImportExport.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIFpudW55IEdtYkgsIGh0dHA6Ly96bnVueS5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckZpcnN0Ij4KCiAgICBbJQogICAgICAgIFNFVCBUeXBlICA9IFRyYW5zbGF0ZShEYXRhLlR5cGUpOwogICAgICAgIFNFVCBMYWJlbCA9IFRyYW5zbGF0ZSgiU0xBcyIpOwogICAgJV0KCiAgICBbJSBCcmVhZGNydW1iUGF0aCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGUoIiVzIC0gJXMiLExhYmVsLCBUeXBlKSwKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uT3ZlcnZpZXciKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluU0xBIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUiPjwvaT5bJSBUcmFuc2xhdGUoIlNMQXMiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25PdmVydmlldyIpICVdCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkhpbnQiKSB8IGh0bWwgJV0gLSBbJSBUcmFuc2xhdGUoRGF0YS5UeXBlKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgPGI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlNlbGVjdCB0aGUgaXRlbXMgeW91IHdhbnQgdG8gIikgfCBodG1sICVdIFslIFRyYW5zbGF0ZShEYXRhLlR5cGUpIHwgaHRtbCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9iPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2JyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbXBvcnRIaW50IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJTZWxlY3QgdGhlIGRlc2lyZWQgZWxlbWVudHMgYW5kIGNvbmZpcm0gdGhlIGltcG9ydCB3aXRoICdpbXBvcnQnLiIpIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSW1wb3J0SGludCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkV4cG9ydEhpbnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkhlcmUgeW91IGNhbiBleHBvcnQgYSBjb25maWd1cmF0aW9uIGZpbGUgb2YgU0xBcyB0byBpbXBvcnQgdGhlc2Ugb24gYW5vdGhlciBzeXN0ZW0uIFRoZSBjb25maWd1cmF0aW9uIGZpbGUgaXMgZXhwb3J0ZWQgaW4geW1sIGZvcm1hdC4iKSB8IGh0bWwgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkV4cG9ydEhpbnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTTEFzIExpc3QiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50IExheW91dEdyaWQgQ29sdW1uc1dpdGhTcGFjaW5nIj4KCiAgICAgICAgICAgICAgICA8Zm9ybSBpZD0nRm9ybScgYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJTdWJhY3Rpb24iKSAlXUFjdGlvbiIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlR5cGUiIHZhbHVlPSJbJSBEYXRhLlR5cGUgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllcyIgIHZhbHVlPSJbJSBEYXRhLk92ZXJ3cml0ZUV4aXN0aW5nRW50aXRpZXMgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSIgaWQ9IlNMQXNUYWJsZSIgc3VtbWFyeT0iTGlzdCBvZiBhbGwgcmVnaXN0ZXJlZCBTTEFzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0nQ2VudGVyJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJTZWxlY3RBbGxTTEFzIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCdUb2dnbGUgYWxsIGF2YWlsYWJsZSBlbGVtZW50cycpIHwgaHRtbCAlXSIgY2hlY2tlZCB2YWx1ZT0iIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkZpZWxkcyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQ29tbWVudCIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTTEFzUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBpZD0iU0xBSURfWyUgRGF0YS5TTEFJRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0nQ2VudGVyJz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU0xBQ2hlY2tib3giKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJTTEFzIiBuYW1lPSJTTEFzIiB2YWx1ZT0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgY2hlY2tlZCAvPgpbJSBSZW5kZXJCbG9ja0VuZCgiU0xBQ2hlY2tib3giKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbXBvcnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk5hbWUgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkltcG9ydCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkV4cG9ydCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pblNMQTtTdWJhY3Rpb249Q2hhbmdlO1NMQUlEPVslIERhdGEuU0xBSUQgfCB1cmkgJV0iIHRpdGxlPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uTGluayI+WyUgRGF0YS5OYW1lICVdPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiRXhwb3J0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBUcmFuc2xhdGUoRGF0YS5Db21tZW50KSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBUcmFuc2xhdGUoRGF0YS5WYWxpZCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJTTEFzUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB0eXBlPSJzdWJtaXQiIGlkPSJFeHBvcnQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoRGF0YS5UeXBlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKERhdGEuVHlwZSkgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWRtaW5TTEEiID5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/Dashboard/TileServiceCatalog.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI0IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5kZS8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKPGRpdiBpZD0ib29vVGlsZVslIERhdGEuVGlsZUlEIHwgaHRtbCAlXSIgY2xhc3M9Im9vb1RpbGUgb29vVGlsZV9TZXJ2aWNlQ2F0YWxvZyI+CiAgICA8aDI+WyUgVHJhbnNsYXRlKERhdGEuSGVhZGVyVGV4dCkgfCBodG1sICVdPC9oMj4KICAgIDxkaXYgY2xhc3M9Im9vb1NlcnZpY2VDYXRhbG9nV3JhcHBlciI+CiAgICAgICAgPHVsIGNsYXNzPSJvb29QYXJlbnRTZXJ2aWNlTGlzdCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlBhcmVudFNlcnZpY2UiKSAlXQogICAgICAgICAgICA8bGkgdGl0bGU9IlslIFRyYW5zbGF0ZSgnU2hvdyBkZXRhaWxzIG9mIHRoaXMgc2VydmljZS4nKSB8IGh0bWwgJV0iIGRhdGEtc2VydmljZS1pZD0iWyUgRGF0YS5TZXJ2aWNlSUQgfCBodG1sICVdIiBjbGFzcz0ib29vU2VydmljZUlEQXZhaWxhYmxlIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lU2hvcnQpIHwgaHRtbCAlXTwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJQYXJlbnRTZXJ2aWNlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUGFyZW50U2VydmljZU1vcmUiKSAlXQogICAgICAgICAgICA8bGkgY2xhc3M9Im9vb1NlcnZpY2VNb3JlIG9vb1NlcnZpY2VJREF2YWlsYWJsZSIgZGF0YS1zZXJ2aWNlLWlkPSJBbGwiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib29vU2VydmljZU1vcmVTZWFyY2giPjxpIGNsYXNzPSJvb29mbyBvb29mby1zZWFyY2giPjwvaT48c3Bhbj5bJSBUcmFuc2xhdGUoJ1NlYXJjaCcpIHwgaHRtbCAlXTwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9vb1NlcnZpY2VNb3JlSW5mbyI+KyBbJSBEYXRhLk51bWJlck9mU2VydmljZXMgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJQYXJlbnRTZXJ2aWNlTW9yZSIpICVdCiAgICAgICAgPC91bD4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/Dashboard/TileServiceCatalogDynamicFields.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZmllbGRzZXQgY2xhc3M9Im9vb0R5bmFtaWNGaWVsZHMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXJ2aWNlRHluYW1pY0ZpZWxkIikgJV0KWyUgSUYgRGF0YS5UaXRsZUZpZWxkICVdCiAgICA8cCB0aXRsZT0iWyUgRGF0YS5UZXh0IHwgaHRtbCAlXSIgc3R5bGU9IlslIERhdGEuU3R5bGUgfCBodG1sICVdIj5bJSBEYXRhLlRleHQgfCBodG1sICVdPC9wPgpbJSBFTFNFICVdCiAgICA8cCBjbGFzcz0ib29vMTIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJvb28xMmciPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV06PC9zcGFuPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXJ2aWNlRHluYW1pY0ZpZWxkTGluayIpICVdCiAgICAgICAgPHNwYW4gdGl0bGU9IlslIERhdGEuVGl0bGUgJV0iPjxhIGhyZWY9IlslIERhdGEuTGluayB8IEludGVycG9sYXRlICVdIlslIElGIERhdGEuTGlua1ByZXZpZXcgJV0gZGF0YS10cmlnZ2VyPSJmbG9hdGVyIiBkYXRhLWZsb2F0ZXItdXJsPSJbJSBEYXRhLkxpbmtQcmV2aWV3IHwgSW50ZXJwb2xhdGUgJV0iWyUgRU5EICVdIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iRHluYW1pY0ZpZWxkTGluayI+WyUgRGF0YS5WYWx1ZSAlXTwvYT48L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJTZXJ2aWNlRHluYW1pY0ZpZWxkTGluayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlNlcnZpY2VEeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgPHNwYW4gdGl0bGU9IlslIERhdGEuVGl0bGUgJV0iPlslIERhdGEuVmFsdWUgJV08L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJTZXJ2aWNlRHluYW1pY0ZpZWxkUGxhaW4iKSAlXQogICAgPC9wPgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlNlcnZpY2VEeW5hbWljRmllbGQiKSAlXQo8L2ZpZWxkc2V0PgoKPHN0eWxlPgogICAgZmllbGRzZXQub29vRHluYW1pY0ZpZWxkcyB7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIG1hcmdpbi10b3A6IDUwcHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDBweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDBweDsKICAgICAgICAvKiBwb3NpdGlvbjogYWJzb2x1dGU7ICovCiAgICAgICAgYm90dG9tOiAwOwogICAgfQoKICAgIC5vb29EeW5hbWljRmllbGRzIC5vb28xMmcgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4zcHg7CiAgICAgICAgY29sb3I6ICM3ZjgwOWQ7CiAgICB9Cjwvc3R5bGU+Cg==</File>
        <File Location="Kernel/Output/JavaScript/Templates/Standard/Customer/TileServiceCatalogContainer.html.tmpl" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGRhdGEtc2VydmljZS1pZD0ie3sgSUQgfX0iIGNsYXNzPSJvb29TZXJ2aWNlQ29udGFpbmVyIHt7IENsYXNzIH19Ij4KICAgIAogICAgPGRpdiBjbGFzcz0ib29vRGVzY2lwdGlvbkhlYWRlciI+CiAgICAgICAgPGgyIGNsYXNzPSJvb29TZXJ2aWNlTmFtZSIgdGl0bGU9Int7IE5hbWUgfX0iPnt7IE5hbWUgfX08L2gyPgogICAgICAgIHslIGlmICggVGlja2V0VHlwZSB8IGxlbmd0aCApID49IDEgJX0KICAgICAgICAgICAgPGkgY2xhc3M9Im9vb2ZvIG9vb2ZvLW1vcmVfdiI+PC9pPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvb29TZXJ2aWNlQWN0aW9ucyBvb29IaWRkZW4iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib29vU2VydmljZUFjdGlvblR5cGVzIiBkYXRhLXNlcnZpY2UtaWQ9Int7IElEIH19Ij4KICAgICAgICAgICAgICAgICAgICB7JSBmb3IgVHlwZU5hbWUsIFR5cGUgaW4gVGlja2V0VHlwZSAlfQogICAgICAgICAgICAgICAgICAgICAgICA8YSB0aXRsZT0ie3sgJ0NyZWF0ZSBhIG5ldyB0aWNrZXQgZm9yIHRoaXMgc2VydmljZS4nIHwgVHJhbnNsYXRlIH19IiBocmVmPSJ7eyBCYXNlbGluayB9fUFjdGlvbj1DdXN0b21lclRpY2tldE1lc3NhZ2U7U2VydmljZUlEPXt7IElEIH19O1R5cGVJRD17eyBUeXBlLklEIH19IiBjbGFzcz0ib29vU2VydmljZUFjdGlvbkVudHJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJvb29mbyBvb29mby1mYXEge3sgVHlwZS5DbGFzc2VzIH19Ij48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnQ3JlYXRlICVzJyB8IFRyYW5zbGF0ZShUeXBlTmFtZSkgfX08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICB7JSBlbmRmb3IgJX0KICAgICAgICAgICAgICAgICAgICB7JSBpZiBOdW1iZXJPZlN1YnNlcnZpY2VzICV9CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1zZXJ2aWNlLWlkPSJ7eyBJRCB9fSIgY2xhc3M9Im9vb1NlcnZpY2VBY3Rpb25FbnRyeSBvb29TZXJ2aWNlQWN0aW9uU3Vic2VydmljZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Im9vb2ZvIG9vb2ZvLWxvdXBlIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnU2hvdyAlcyBzdWItc2VydmljZShzKScgfCBUcmFuc2xhdGUoTnVtYmVyT2ZTdWJzZXJ2aWNlcykgfX08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIHslIGVuZGlmICV9CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib29vU2VydmljZUFjdGlvbkVudHJ5IG9vb1NlcnZpY2VBY3Rpb25EZXRhaWxzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Im9vb2ZvIG9vb2ZvLXN1YnNjcmlwdGlvbiI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnTW9yZSBkZXRhaWxzJyB8IFRyYW5zbGF0ZSB9fTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICB7JSBlbmRpZiAlfQogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ib29vRGVzY3JpcHRpb25Cb2R5Ij4KICAgICAgICB7JSBpZiBOdW1iZXJPZlN1YnNlcnZpY2VzICV9CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9vb1N1YnNlcnZpY2VzIG9vbzEyZyI+e3sgTnVtYmVyT2ZTdWJzZXJ2aWNlcyB9fSB7eyAnU3ViLVNlcnZpY2UocyknIHwgVHJhbnNsYXRlIH19PC9kaXY+CiAgICAgICAgeyUgZW5kaWYgJX0KICAgICAgICA8c3BhbiBjbGFzcz0ib29vRGVzY3JpcHRpb25TaG9ydCI+e3sgRGVzY3JpcHRpb25TaG9ydCB9fTwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ib29vS2V5d29yZHMiPnt7IEtleXdvcmRzIH19PC9zcGFuPgogICAgPC9kaXY+CgogICAgeyUgaWYgbm90IE5vdFNlbGVjdGFibGUgJX0KICAgIDxkaXYgY2xhc3M9Im9vb1NlcnZpY2VCb3R0b20iPgogICAgICAgIDxwIHRpdGxlPSJ7eyAnU2hvdyBkZXRhaWxzIG9mIHRoaXMgc2VydmljZS4nIHwgVHJhbnNsYXRlIH19IiBjbGFzcz0ib29vU2VydmljZUluZm9ybWF0aW9uIj4KICAgICAgICAgICAge3sgJ0RldGFpbHMnIHwgVHJhbnNsYXRlIH19CiAgICAgICAgPC9wPgogICAgICAgIDxpIGNsYXNzPSJvb29mbyBvb29mby1hcnJvd19yIj48L2k+CiAgICA8L2Rpdj4KICAgIHslIGVuZGlmICV9CjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/JavaScript/Templates/Standard/Customer/TileServiceCatalogDetailed.html.tmpl" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp7JSBpZiBOdW1iZXJPZlN1YnNlcnZpY2VzICV9CiAgIDwhLS0gPHNwYW4gY2xhc3M9Im9vb1N1YnNlcnZpY2VzIG9vbzEyZyIgZGF0YS1zZXJ2aWNlLWlkPSJ7eyBJRCB9fSI+e3sgTnVtYmVyT2ZTdWJzZXJ2aWNlcyB9fSB7eyAnc3ViLXNlcnZpY2UocykgYXZhaWxhYmxlJyB8IFRyYW5zbGF0ZSB9fTwvc3Bhbj4gLS0+CnslIGVuZGlmICV9CjxkaXYgZGF0YS1zZXJ2aWNlLWlkPSJ7eyBJRCB9fSIgY2xhc3M9Im9vb0RldGFpbGVkU2VydmljZUNvbnRhaW5lciI+CiAgICA8ZGl2IGNsYXNzPSJvb29EZXRhaWxlZExlZnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im9vb0RldGFpbGVkU2VydmljZU5hbWUiPgogICAgICAgICAgICA8aDI+e3sgTmFtZSB9fTwvaDI+CiAgICAgICAgICAgIDwhLS0gPHA+e3sgRGVzY3JpcHRpb25TaG9ydCB9fTwvcD4gLS0+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ib29vRGV0YWlsZWREZXNjcmlwdGlvbkxvbmciPgogICAgICAgICAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXBvcHVwcyBtcy1hbGxvdy1wb3B1cHMgYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94IiB0aXRsZT0iYWJvdXQ6YmxhbmsiIGZyYW1lYm9yZGVyPSIwIiBjbGFzcz0iVmlzaWJsZUZyYW1lIiBzcmM9Int7IElmcmFtZUxpbmsgfX0iPjwvaWZyYW1lPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJvb29EZXRhaWxlZFJpZ2h0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJvb29EZXRhaWxlZFRpY2tldFR5cGVMaXN0Ij4KICAgICAgICAgICAgeyUgaWYgVHlwZUxpc3QgJX0KICAgICAgICAgICAgICAgIHslIGZvciBUeXBlTmFtZSwgVHlwZSBpbiBUeXBlTGlzdCAlfQogICAgICAgICAgICAgICAgICAgIHslIGlmIGxvb3AuaW5kZXgwIDwgMyAlfSAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGl0bGU9Int7ICdDcmVhdGUgYSBuZXcgdGlja2V0IG9mIHR5cGUgJXMuJyB8IFRyYW5zbGF0ZShUeXBlTmFtZSkgfX0iIGhyZWY9Int7IEJhc2VsaW5rIH19QWN0aW9uPUN1c3RvbWVyVGlja2V0TWVzc2FnZTtTZXJ2aWNlSUQ9e3sgSUQgfX07VHlwZUlEPXt7IFR5cGUuSUQgfX0iPjxpIGNsYXNzPSJvb29mbyBvb29mby1mYXEge3sgVHlwZS5DbGFzc2VzIH19Ij48L2k+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ0NyZWF0ZSAlcycgfCBUcmFuc2xhdGUoVHlwZU5hbWUpIH19PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgeyUgZW5kaWYgJX0KICAgICAgICAgICAgICAgIHslIGVuZGZvciAlfQogICAgICAgICAgICB7IyB7JSBlbHNlICV9CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0ib29vZm8gb29vZm8tZmFxIj48L2k+PGEgaHJlZj0ie3sgQmFzZWxpbmsgfX1BY3Rpb249Q3VzdG9tZXJUaWNrZXRNZXNzYWdlO1NlcnZpY2VJRD17eyBJRCB9fSI+IHt7ICdDcmVhdGUgVGlja2V0JyB8IFRyYW5zbGF0ZSB9fTwvYT48YnI+ICN9CiAgICAgICAgICAgIHslIGVuZGlmICV9CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9Im9vb0RldGFpbGVkQWNjb3JkaW9uTGlzdCI+CgogICAgICAgIHslIGlmIEZBUUFydGljbGVMaXN0ICV9CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9vb0RldGFpbGVkQWNjb3JkaW9uIFdpZGdldFNpbXBsZSB7JSBpZiBBZGRpdGlvbmFsSW5mb3JtYXRpb24gJX1Db2xsYXBzZWR7JSBlbHNlICV9RXhwYW5kZWR7JSBlbmRpZiAlfSBBbmltYXRlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJ7eyAnU2hvdyBvciBoaWRlIHRoZSBjb250ZW50JyB8IFRyYW5zbGF0ZSB9fSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+e3sgJ0ZBUSBhcnRpY2xlIG9uIHRoaXMgdG9waWMnIHwgVHJhbnNsYXRlIH19PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9vb051bWJlck9mRW50cmllcyI+PHNwYW4+e3sgRkFRQXJ0aWNsZUxpc3QubGVuZ3RoIH19PC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Im9vb2ZvIG9vb2ZvLWFycm93X3UiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJvb29mbyBvb29mby1hcnJvd19kIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib29vRGV0YWlsZWRGQVEgQ29udGVudCIgeyUgaWYgQWRkaXRpb25hbEluZm9ybWF0aW9uICV9c3R5bGU9ImRpc3BsYXk6IG5vbmU7InslIGVsc2UgJX17JSBlbmRpZiAlfT4KICAgICAgICAgICAgICAgICAgICB7JSBmb3IgRkFRQXJ0aWNsZSBpbiBGQVFBcnRpY2xlTGlzdCAlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0ie3sgQmFzZWxpbmsgfX1BY3Rpb249Q3VzdG9tZXJGQVFab29tO0l0ZW1JRD17eyBGQVFBcnRpY2xlLkl0ZW1JRCB9fSIgdGl0bGU9Int7IEZBUUFydGljbGUuVGl0bGUgfX0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9vb0RldGFpbGVkRkFRSXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJvb29EZXRhaWxlZEFjY29yZGlvbkNhcHRpb24iPnt7IEZBUUFydGljbGUuVGl0bGUgfX08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9vb0ZBUURlc2NyaXB0aW9uIj57eyBGQVFBcnRpY2xlLkRlc2NyaXB0aW9uIH19PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJvb29GQVFEZXRhaWxzSGludCBvb29IaWRkZW4iPnt7ICdEZXRhaWxzJyB8IFRyYW5zbGF0ZSB9fTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICB7JSBlbmRmb3IgJX0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICB7JSBlbmRpZiAlfQoKICAgICAgICB7JSBpZiBBZGRpdGlvbmFsSW5mb3JtYXRpb24gJX0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ib29vRGV0YWlsZWRBY2NvcmRpb24gV2lkZ2V0U2ltcGxlIHslIGlmIEZBUUFydGljbGVMaXN0ICV9Q29sbGFwc2VkeyUgZWxzZSAlfUV4cGFuZGVkeyUgZW5kaWYgJX0gQW5pbWF0ZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0ie3sgJ1Nob3cgb3IgaGlkZSB0aGUgY29udGVudCcgfCBUcmFuc2xhdGUgfX0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPnt7ICdBZGRpdGlvbmFsIGluZm9ybWF0aW9uJyB8IFRyYW5zbGF0ZSB9fTwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0ib29vZm8gb29vZm8tYXJyb3dfdSI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Im9vb2ZvIG9vb2ZvLWFycm93X2QiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJvb29EZXRhaWxlZEFkZGl0aW9uYWxJbmZvcm1hdGlvbiBDb250ZW50IiB7JSBpZiBGQVFBcnRpY2xlTGlzdCAlfXN0eWxlPSJkaXNwbGF5OiBub25lOyJ7JSBlbHNlICV9eyUgZW5kaWYgJX0+CiAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgeyUgaWYgV29ya2luZ0hvdXJzIG9yIEZpcnN0UmVzcG9uc2VUaW1lIG9yIFNvbHV0aW9uVGltZSAlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Im9vb0RldGFpbGVkQWNjb3JkaW9uQ2FwdGlvbiBvb29EZXRhaWxlZFN1YnRpdGxlIj57eyAnU2VydmljZSBob3VycycgfCBUcmFuc2xhdGUgfX08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JSBpZiBXb3JraW5nSG91cnMgJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0ib29vU0xBTGFiZWwiPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im9vbzEyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslIGZvciBSdW4gaW4gV29ya2luZ0hvdXJzICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgUnVuLlN0YXJ0RGF5IHwgVHJhbnNsYXRlKFJ1bi5TdGFydERheSkgfX17JSBpZiBSdW4uTGFzdERheSAhPSBSdW4uU3RhcnREYXkgJX0mIzgyMTE7e3sgUnVuLkxhc3REYXkgfCBUcmFuc2xhdGUoUnVuLkxhc3REYXkpIH19eyUgZW5kaWYgJX0ge3sgUnVuLkZpcnN0SG91ciB9fSYjODIxMTt7eyBSdW4uTGFzdEhvdXIgfX0ge3sgIm8nY2xvY2siIHwgVHJhbnNsYXRlIH19CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgZW5kZm9yICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JSBlbmRpZiAlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgaWYgRmlyc3RSZXNwb25zZVRpbWUgJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0ib29vMTIiPnt7ICdGaXJzdCBSZXNwb25zZSBUaW1lJyB8IFRyYW5zbGF0ZSB9fToge3sgRmlyc3RSZXNwb25zZVRpbWUgfX0ge3sgJ2hvdXIocyknIHwgVHJhbnNsYXRlIH19PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgZW5kaWYgJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslIGlmIFNvbHV0aW9uVGltZSAlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJvb28xMiI+e3sgJ1NvbHV0aW9uIFRpbWUnIHwgVHJhbnNsYXRlIH19OiB7eyBTb2x1dGlvblRpbWUgfX0ge3sgJ2hvdXIocyknIHwgVHJhbnNsYXRlIH19PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgZW5kaWYgJX0KICAgICAgICAgICAgICAgICAgICAgICAgeyUgZW5kaWYgJX0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICB7JSBpZiBEeW5hbWljRmllbGRMaXN0ICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0ib29vRGV0YWlsZWRBY2NvcmRpb25DYXB0aW9uIG9vb0RldGFpbGVkU3VidGl0bGUiPnt7ICdTZXJ2aWNlIEluZm9ybWF0aW9uJyB8IFRyYW5zbGF0ZSB9fTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslIGZvciBERkRhdGEgaW4gRHluYW1pY0ZpZWxkTGlzdCAlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslIGlmIERGRGF0YS5MaW5rICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Im9vbzEyIj48c3Bhbj57eyBERkRhdGEuTGFiZWwgfCBUcmFuc2xhdGUgfX06PC9zcGFuPiA8YSBocmVmPSJ7eyBERkRhdGEuTGluayB9fSIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiIHslIGlmIERGRGF0YS5MaW5rUHJldmlldyAlfSBkYXRhLXRyaWdnZXI9ImZsb2F0ZXIiIGRhdGEtZmxvYXRlci11cmw9Int7IERGRGF0YS5MaW5rUHJldmlldyB9fSJ7JSBlbmRpZiAlfSB0YXJnZXQ9Il9ibGFuayI+e3sgREZEYXRhLlZhbHVlIH19PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslIGVsc2UgJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0ib29vMTIiPjxzcGFuPnt7IERGRGF0YS5MYWJlbCB8IFRyYW5zbGF0ZSB9fTo8L3NwYW4+IHt7IERGRGF0YS5WYWx1ZSB9fTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JSBlbmRpZiAlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgZW5kZm9yICV9CiAgICAgICAgICAgICAgICAgICAgICAgIHslIGVuZGlmICV9CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgeyMgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1wb3B1cHMgbXMtYWxsb3ctcG9wdXBzIGFsbG93LXBvcHVwcy10by1lc2NhcGUtc2FuZGJveCIgdGl0bGU9ImFib3V0OmJsYW5rIiBmcmFtZWJvcmRlcj0iMCIgY2xhc3M9IlZpc2libGVGcmFtZSIgc3JjPSJ7eyBJZnJhbWVMaW5rRHluYW1pY0ZpZWxkIH19Ij48L2lmcmFtZT4gI30KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICB7JSBlbHNlICV9CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9vb0RldGFpbGVkQWNjb3JkaW9uIFdpZGdldFNpbXBsZSB7JSBpZiBGQVFBcnRpY2xlTGlzdCAlfUNvbGxhcHNlZHslIGVsc2UgJX1FeHBhbmRlZHslIGVuZGlmICV9IEFuaW1hdGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9Int7ICdTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQnIHwgVHJhbnNsYXRlIH19Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz57eyAnQWRkaXRpb25hbCBpbmZvcm1hdGlvbicgfCBUcmFuc2xhdGUgfX08L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Im9vb2ZvIG9vb2ZvLWFycm93X3UiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJvb29mbyBvb29mby1hcnJvd19kIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib29vRGV0YWlsZWRBZGRpdGlvbmFsSW5mb3JtYXRpb24gQ29udGVudCIgeyUgaWYgRkFRQXJ0aWNsZUxpc3QgJX1zdHlsZT0iZGlzcGxheTogbm9uZTsieyUgZWxzZSAlfXslIGVuZGlmICV9PiAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Im9vb0RldGFpbGVkQWNjb3JkaW9uQ2FwdGlvbiBvb29EZXRhaWxlZFN1YnRpdGxlIj57eyAnTm8gYWRkaXRpb25hbCBkYXRhIGFyZSBhdmFpbGFibGUuJyB8IFRyYW5zbGF0ZSB9fTwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICB7JSBlbmRpZiAlfQoKICAgICAgICB7JSBpZiBTdWJzZXJ2aWNlc0hUTUwgfCBsZW5ndGggPiAwICV9CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9vb0RldGFpbGVkQWNjb3JkaW9uIFdpZGdldFNpbXBsZSBDb2xsYXBzZWQgQW5pbWF0ZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0ie3sgJ1Nob3cgb3IgaGlkZSB0aGUgY29udGVudCcgfCBUcmFuc2xhdGUgfX0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPnt7ICdTdWItU2VydmljZShzKScgfCBUcmFuc2xhdGUgfX08L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib29vTnVtYmVyT2ZFbnRyaWVzIj48c3Bhbj57eyBOdW1iZXJPZlN1YnNlcnZpY2VzIH19PC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Im9vb2ZvIG9vb2ZvLWFycm93X3UiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJvb29mbyBvb29mby1hcnJvd19kIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib29vRGV0YWlsZWRTdWJzZXJ2aWNlcyBDb250ZW50IiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgogICAgICAgICAgICAgICAgICAgIHslIGZvciBTdWJzZXJ2aWNlIGluIFN1YnNlcnZpY2VzSFRNTCAlfQogICAgICAgICAgICAgICAgICAgICAgICB7eyBTdWJzZXJ2aWNlIHwgc2FmZSB9fQogICAgICAgICAgICAgICAgICAgIHslIGVuZGZvciAlfQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIHslIGVuZGlmICV9CgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGEgaWQ9Im9vb0RldGFpbGVkVG9nZ2xlU2lkZWJhciIgaHJlZj0iIyIgdGl0bGU9Int7ICdGdXJ0aGVyIGluZm9ybWF0aW9uJyB8IFRyYW5zbGF0ZSB9fSIgYWNjZXNza2V5PSJuIj4KICAgICAgICA8YnV0dG9uPgogICAgICAgICAgICA8aSBjbGFzcz0ib29vZm8gb29vZm8tbW9yZV92Ij48L2k+CiAgICAgICAgPC9idXR0b24+CiAgICA8L2E+Cgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/JavaScript/Templates/Standard/Customer/TileServiceCatalogModal.html.tmpl" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJvb29TZXJ2aWNlQ2F0YWxvZyI+CiAgICA8ZGl2IGNsYXNzPSJSb3cgb29vU2VydmljZUZpZWxkIj4KICAgICAgICB7eyBTZXJ2aWNlU3RyZyB8IHNhZmUgfX0KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iUm93IG9vb1NlcnZpY2VGaWVsZFNlYXJjaCI+CiAgICAgICAgPGlucHV0IHRpdGxlPSJ7eyAnU2VhcmNoIGNhdGFsb2cnIHwgVHJhbnNsYXRlIH19IiB0eXBlPSJ0ZXh0IiBuYW1lPSJTZWFyY2giIHBsYWNlaG9sZGVyPSJ7eyAnU2VhcmNoJyB8IFRyYW5zbGF0ZSB9fS4uLiI+PC9pbnB1dD4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ib29vU2VydmljZUJyZWFkY3J1bWJXcmFwIj4KICAgICAgICA8aSBjbGFzcz0ib29vU2Nyb2xsTGVmdCBvb29mby1hcnJvd19sIj48L2k+CiAgICAgICAgPGRpdiBjbGFzcz0ib29vU2VydmljZUJyZWFkY3J1bWIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvb29TZXJ2aWNlQnJlYWRjcnVtYkZpZWxkIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ib29vQnJlYWRjcnVtYlNlcnZpY2VMaXN0Ij48L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8aSBjbGFzcz0ib29vU2Nyb2xsUmlnaHQgb29vZm8tYXJyb3dfciI+PC9pPgogICAgPC9kaXY+CiAgICA8cCBjbGFzcz0ib29vU2VydmljZVJlc3VsdCI+CiAgICAgICAgPHNwYW4gY2xhc3M9Im9vb1NlcnZpY2VSZXN1bHROdW1iZXIiPjwvc3Bhbj4KICAgIDwvcD4KICAgIDxkaXYgY2xhc3M9Im9vb1NlcnZpY2VXcmFwcGVyIj4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/System/DynamicField/ObjectType/Service.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6Ok9iamVjdFR5cGU6OlNlcnZpY2U7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpPYmplY3RUeXBlOjpTZXJ2aWNlCgo9aGVhZDEgREVTQ1JJUFRJT04KClNlcnZpY2Ugb2JqZWN0IGhhbmRsZXIgZm9yIER5bmFtaWNGaWVsZHMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCnVzdWFsbHksIHlvdSB3YW50IHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGlzCmJ5IHVzaW5nIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6Ok9iamVjdFR5cGU6OlNlcnZpY2UtPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBibGVzcyB7fSwgJFR5cGU7Cn0KCj1oZWFkMiBQb3N0VmFsdWVTZXQoKQoKcGVyZm9ybSBzcGVjaWZpYyBmdW5jdGlvbnMgYWZ0ZXIgdGhlIFZhbHVlIHNldCBmb3IgdGhpcyBvYmplY3QgdHlwZS4KCiAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRUaWNrZXRIYW5kbGVyT2JqZWN0LT5Qb3N0VmFsdWVTZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsICAgICAgIyBjb21wbGV0ZSBjb25maWcgb2YgdGhlIER5bmFtaWNGaWVsZAogICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkT2JqZWN0SUQsICAgICAgICAgICAgICAgICMgSUQgb2YgdGhlIGN1cnJlbnQgb2JqZWN0IHRoYXQgdGhlIGZpZWxkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtdXN0IGJlIGxpbmtlZCB0bywgZS4gZy4gVGlja2V0SUQKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLCAgICAgICAgICAgICAgICAgICAjIFZhbHVlIHRvIHN0b3JlLCBkZXBlbmRzIG9uIGJhY2tlbmQgdHlwZQogICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIFBvc3RWYWx1ZVNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRHluYW1pY0ZpZWxkQ29uZmlnIE9iamVjdElEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIER5bmFtaWNGaWVsZENvbmZpZyAoZ2VuZXJhbCkKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGZpZWxkIGNvbmZpZ3VyYXRpb24gaXMgaW52YWxpZCIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBEeW5hbWljRmllbGRDb25maWcgKGludGVybmFsbHkpCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoSUQgRmllbGRUeXBlIE9iamVjdFR5cGUpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCBpbiBEeW5hbWljRmllbGRDb25maWchIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIE5vdGhpbmcgdG8gZG8gaGVyZQogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBPYmplY3REYXRhR2V0KCkKCnJldHJpZXZlcyB0aGUgZGF0YSBvZiB0aGUgY3VycmVudCBvYmplY3QuCgogICAgbXkgJU9iamVjdERhdGEgPSAkRHluYW1pY0ZpZWxkVGlja2V0SGFuZGxlck9iamVjdC0+T2JqZWN0RGF0YUdldCgKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywgICAgICAjIGNvbXBsZXRlIGNvbmZpZyBvZiB0aGUgRHluYW1pY0ZpZWxkCiAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEyMywKICAgICk7CgpyZXR1cm5zOgoKICAgICVPYmplY3REYXRhID0gKAogICAgICAgIE9iamVjdElEID0+IDEyMywKICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgIFVzZXJMb2dpbiAgICAgPT4gJ2pkb2UnLAogICAgICAgICAgICBVc2VyRmlyc3RuYW1lID0+ICdKb2huJywKICAgICAgICAgICAgVXNlckxhc3RuYW1lICA9PiAnRG9tZScsCiAgICAgICAgICAgIFVzZXJFbWFpbCAgICAgPT4gJ2ouZG9lQGV4YW1wbGUuY29tJywKICAgICAgICAgICAgIyAuLi4KICAgICAgICB9CiAgICApOwoKPWN1dAoKc3ViIE9iamVjdERhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIENoZWNrIG5lZWRlZCBzdHVmZi4KICAgIGZvciBteSAkTmVlZGVkIChxdyhEeW5hbWljRmllbGRDb25maWcgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgQ2hlY2sgRHluYW1pY0ZpZWxkQ29uZmlnIChnZW5lcmFsKS4KICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGZpZWxkIGNvbmZpZ3VyYXRpb24gaXMgaW52YWxpZCIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBDaGVjayBEeW5hbWljRmllbGRDb25maWcgKGludGVybmFsbHkpLgogICAgZm9yIG15ICROZWVkZWQgKHF3KElEIEZpZWxkVHlwZSBPYmplY3RUeXBlKSkgewogICAgICAgIGlmICggISRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQgaW4gRHluYW1pY0ZpZWxkQ29uZmlnISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFVzZXJJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJRCcgKSB8fCAnJzsKCiAgICByZXR1cm4gdW5sZXNzICRVc2VySUQ7CgogICAgbXkgJE9iamVjdElEOwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgogICAgbXkgJE9iamVjdElEcyA9ICREeW5hbWljRmllbGRPYmplY3QtPk9iamVjdE1hcHBpbmdHZXQoCiAgICAgICAgT2JqZWN0TmFtZSA9PiAkVXNlcklELAogICAgICAgIE9iamVjdFR5cGUgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntPYmplY3RUeXBlfSwKICAgICk7CgogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkT2JqZWN0SURzKSAmJiAkT2JqZWN0SURzLT57JFVzZXJJRH0gKSB7CiAgICAgICAgJE9iamVjdElEID0gJE9iamVjdElEcy0+eyRVc2VySUR9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE9iamVjdElEID0gJER5bmFtaWNGaWVsZE9iamVjdC0+T2JqZWN0TWFwcGluZ0NyZWF0ZSgKICAgICAgICAgICAgT2JqZWN0TmFtZSA9PiAkVXNlcklELAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57T2JqZWN0VHlwZX0sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICEkT2JqZWN0SUQgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGRldGVybWluZSBvYmplY3QgaWQgZm9yIG9iamVjdCBuYW1lICRVc2VySUQgYW5kIHR5cGUgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntPYmplY3RUeXBlfSEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJVNlcnZpY2VEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKS0+U2VydmljZUdldCgKICAgICAgICBVc2VyICA9PiAkVXNlcklELAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgIHJldHVybiAoCiAgICAgICAgT2JqZWN0SUQgPT4gJE9iamVjdElELAogICAgICAgIERhdGEgICAgID0+IFwlU2VydmljZURhdGEsCiAgICApOwoKfQoKMTsK</File>
        <File Location="var/httpd/htdocs/js/Core.Customer.TileServiceCatalog.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNCBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uZGUvCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgQ29yZSA9IENvcmUgfHwge307CkNvcmUuQ3VzdG9tZXIgPSBDb3JlLkN1c3RvbWVyIHx8IHt9OwoKQ29yZS5DdXN0b21lci5UaWxlU2VydmljZUNhdGFsb2cgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CiAgICBjb25zdCAkbCA9IGUgPT4gJCgkKGUpLmdldCgtMSkpOyAvLyBsYXN0IG1hdGNoZWQgZWxlbQogICAgY29uc3QgY2xvbmVfb2Zmc2V0X2RpYWxvZyA9ICgpID0+IHsKICAgICAgICBjb25zdCBsYXN0X2RpYWxvZyA9ICRsKCcuRGlhbG9nLk1vZGFsJyk7CiAgICAgICAgbGFzdF9kaWFsb2cucGFyZW50KCkuYXBwZW5kKGxhc3RfZGlhbG9nLmNsb25lKHRydWUpKTsKICAgICAgICBjb25zdCBuZXdfZGlhbG9nID0gJGwoJy5EaWFsb2cuTW9kYWwnKTsKICAgICAgICBjb25zdCBvZmZzZXQgPSBuZXdfZGlhbG9nLm9mZnNldCgpOwogICAgICAgIG9mZnNldC50b3AgKz0gMzA7CiAgICAgICAgb2Zmc2V0LmxlZnQgKz0gMzA7CiAgICAgICAgbmV3X2RpYWxvZy5vZmZzZXQob2Zmc2V0KTsKICAgICAgICAkKG5ld19kaWFsb2cpLmZpbmQoJy5vb29TZXJ2aWNlRmllbGRTZWFyY2ggPiBpbnB1dCcpLnZhbCgnJyk7CiAgICB9OwoKICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICAvLyBMaXN0ZW4gdG8gZG9jdW1lbnQgdG8gcmVjb2duaXplIERPTSBjaGFuZ2VzLgogICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcub29vU2VydmljZUlEQXZhaWxhYmxlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBTZXJ2aWNlSUQgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtc2VydmljZS1pZCcpOwogICAgICAgICAgICAkKCcuRGlhbG9nLk1vZGFsIC5DbG9zZScpLmNsaWNrKCk7CiAgICAgICAgICAgIC8vIFNob3cgdGhlIGRpYWxvZyBpZiBub3QgYWxyZWFkeSBvcGVuLgogICAgICAgICAgICBpZiAoISQoJy5EaWFsb2cuTW9kYWwnKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHZhciBNb2RhbENvbnRhaW5lciA9IENvcmUuVGVtcGxhdGUuUmVuZGVyKCdDdXN0b21lci9UaWxlU2VydmljZUNhdGFsb2dNb2RhbCcsIHsKICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlU3RyZzogSlNPTi5wYXJzZShDb3JlLkNvbmZpZy5HZXQoJ1NlcnZpY2VTdHJnJykpLAogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgQ29yZS5VSS5EaWFsb2cuU2hvd0RpYWxvZyh7CiAgICAgICAgICAgICAgICAgICAgSFRNTDogTW9kYWxDb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgTW9kYWw6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgQ2xvc2VPbkNsaWNrT3V0c2lkZTogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICBDbG9zZU9uRXNjYXBlOiB0cnVlLAogICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uVG9wOiAnMTVweCcsCiAgICAgICAgICAgICAgICAgICAgUG9zaXRpb25MZWZ0OiAnQ2VudGVyJywKICAgICAgICAgICAgICAgICAgICBBbGxvd0F1dG9Hcm93OiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICBTdGFja2VkOiB0cnVlCiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAkKCcuRGlhbG9nLk1vZGFsJykuYWRkQ2xhc3MoJ29vb1NlcnZpY2VDYXRhbG9nTW9kYWwnKTsKICAgICAgICAgICAgICAgIC8vIFRoZSBzZWFyY2ggZmllbGQgaXMgbm90IG5lZWRlZCBhbnltb3JlCiAgICAgICAgICAgICAgICAvLyAkKCcuRGlhbG9nLk1vZGFsIC5vb29TZXJ2aWNlRmllbGQnKS5hcHBlbmRUbygnLkRpYWxvZy5Nb2RhbCA+IC5IZWFkZXInKS5maW5kKCdzZWxlY3QnKS5hdHRyKCdpZCcsICdNb2RhbFNlcnZpY2VJRCcpOwogICAgICAgICAgICAgICAgJCgnLm9vb1NlcnZpY2VGaWVsZCcpLmFkZENsYXNzKCdvb29IaWRkZW4nKTsKICAgICAgICAgICAgICAgICQoJy5EaWFsb2cuTW9kYWwgLm9vb1NlcnZpY2VGaWVsZFNlYXJjaCcpLmFwcGVuZFRvKCcuRGlhbG9nLk1vZGFsID4gLkhlYWRlcicpLmZpbmQoJ3NlbGVjdCcpLmF0dHIoJ2lkJywgJ01vZGFsU2VhcmNoJyk7CiAgICAgICAgICAgICAgICAkKCcub29vU2VydmljZUJyZWFkY3J1bWJXcmFwJykuYXBwZW5kVG8oJy5EaWFsb2cuTW9kYWwgPiAuSGVhZGVyJyk7CiAgICAgICAgICAgICAgICAvLyBDb3JlLlVJLklucHV0RmllbGRzLkluaXQoKTsKICAgICAgICAgICAgICAgICQoJyNNb2RhbFNlcnZpY2VJRCcpLnZhbChTZXJ2aWNlSUQpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIFRhcmdldE5TLkRpc3BsYXlTZXJ2aWNlTGlzdChTZXJ2aWNlSUQpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBTaG93IHN1YnNlcnZpY2VzLgogICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuRGlhbG9nIC5vb29TZXJ2aWNlQ29udGFpbmVyJywgZnVuY3Rpb24oRXZlbnQpIHsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJChFdmVudC50YXJnZXQpLmhhc0NsYXNzKCdvb29mby1pbmZvJykgfHwgJChFdmVudC50YXJnZXQpLmhhc0NsYXNzKCdvb29mby1hZGQnKSB8fCAkKEV2ZW50LnRhcmdldCkuaGFzQ2xhc3MoJ29vb1NlcnZpY2VJbmZvcm1hdGlvbicpCiAgICAgICAgICAgICAgICB8fCAkKEV2ZW50LnRhcmdldCkuaGFzQ2xhc3MoJ29vb1NlcnZpY2VBY3Rpb25zJykgfHwgJChFdmVudC50YXJnZXQpLmhhc0NsYXNzKCdvb29TZXJ2aWNlQWN0aW9uRGV0YWlscycpIHx8ICAkKEV2ZW50LnRhcmdldCkuaGFzQ2xhc3MoJ29vb1NlcnZpY2VCb3R0b20nKSB8fCAkKEV2ZW50LnRhcmdldCkuaGFzQ2xhc3MoJ29vb2ZvLWFycm93X3InKQogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2xvbmVfb2Zmc2V0X2RpYWxvZygpOwogICAgICAgICAgICB2YXIgU2VydmljZUlEID0gJCh0aGlzKS5hdHRyKCdkYXRhLXNlcnZpY2UtaWQnKTsKICAgICAgICAgICAgJCgnI01vZGFsU2VydmljZUlEJykudmFsKFNlcnZpY2VJRCkudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKTsKICAgICAgICAgICAgVGFyZ2V0TlMuRGlzcGxheVNlcnZpY2VMaXN0KFNlcnZpY2VJRCk7CiAgICAgICAgfSk7CgogICAgICAgIC8vIFNob3cgdGhlIGRldGFpbGVkIHZpZXcuCiAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy5vb29TZXJ2aWNlQm90dG9tLCAub29vU2VydmljZUFjdGlvbkRldGFpbHMnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIFNlcnZpY2VJRCA9ICQodGhpcykucGFyZW50KCkuYXR0cignZGF0YS1zZXJ2aWNlLWlkJyk7CiAgICAgICAgICAgIGlmICghU2VydmljZUlEKSByZXR1cm47CiAgICAgICAgICAgIGNsb25lX29mZnNldF9kaWFsb2coKTsKICAgICAgICAgICAgVGFyZ2V0TlMuRGlzcGxheURldGFpbGVkU2VydmljZShTZXJ2aWNlSUQpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSk7CgogICAgICAgIC8vIFNob3cgb3IgaGlkZSBzZXJ2aWNlIGFjdGlvbnMuCiAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy5vb29EZXNjaXB0aW9uSGVhZGVyID4gLm9vb2ZvJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICgkKHRoaXMpLm5leHQoKS5oYXNDbGFzcygnb29vU2VydmljZUFjdGlvbnMnKSkgewogICAgICAgICAgICAgICAgaWYgKCQodGhpcykubmV4dCgpLmhhc0NsYXNzKCdvb29IaWRkZW4nKSkgewogICAgICAgICAgICAgICAgICAgICQodGhpcykubmV4dCgpLnJlbW92ZUNsYXNzKCdvb29IaWRkZW4nKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5uZXh0KCkuYWRkQ2xhc3MoJ29vb0hpZGRlbicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgIH0pOwoKICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnLkRpYWxvZyBzcGFuLm9vb1N1YnNlcnZpY2VzJywgZnVuY3Rpb24oRXZlbnQpIHsKICAgICAgICAgICAgdmFyIFNlcnZpY2VJRCA9ICQodGhpcykuYXR0cignZGF0YS1zZXJ2aWNlLWlkJyk7CiAgICAgICAgICAgIFRhcmdldE5TLkRpc3BsYXlTZXJ2aWNlTGlzdChTZXJ2aWNlSUQpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBTZWxlY3QgYSBzZXJ2aWNlIHdoZW4gbmF2YmFyIGZpZWxkIGlzIGNoYW5nZWQuCiAgICAgICAgJChkb2N1bWVudCkub24oJ2NoYW5nZScsICcjTW9kYWxTZXJ2aWNlSUQnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIFNlcnZpY2VJRCA9ICQodGhpcykudmFsKCk7CiAgICAgICAgICAgIFRhcmdldE5TLkRpc3BsYXlTZXJ2aWNlTGlzdChTZXJ2aWNlSUQpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBFbmFibGUgdGhlIHNlYXJjaCBmdW5jdGlvbi4KICAgICAgICAkKGRvY3VtZW50KS5vbigna2V5dXAnLCAnLkRpYWxvZyA+IC5IZWFkZXIgPiAub29vU2VydmljZUZpZWxkU2VhcmNoID4gaW5wdXQnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIFNlYXJjaFN0cmluZyA9ICQodGhpcykudmFsKCkudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgJGwoJy5EaWFsb2cgLm9vb1NlcnZpY2VXcmFwcGVyJykuZmluZCgnLm9vb1NlcnZpY2VDb250YWluZXInKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIFNlcnZpY2VOYW1lID0gJCh0aGlzKS5maW5kKCcub29vU2VydmljZU5hbWUnKS50ZXh0KCk7CiAgICAgICAgICAgICAgICB2YXIgRGVzY3JpcHRpb24gPSAkKHRoaXMpLmZpbmQoJy5vb29EZXNjcmlwdGlvblNob3J0JykudGV4dCgpOwogICAgICAgICAgICAgICAgdmFyIEtleXdvcmRzICAgID0gJCh0aGlzKS5maW5kKCcub29vS2V5d29yZHMnKS50ZXh0KCk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgKFNlcnZpY2VOYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihTZWFyY2hTdHJpbmcudG9Mb3dlckNhc2UoKSkgPiAtMSkgfHwKICAgICAgICAgICAgICAgICAgICAoRGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKS5pbmRleE9mKFNlYXJjaFN0cmluZy50b0xvd2VyQ2FzZSgpKSA+IC0xKSB8fAogICAgICAgICAgICAgICAgICAgIChLZXl3b3Jkcy50b0xvd2VyQ2FzZSgpLmluZGV4T2YoU2VhcmNoU3RyaW5nLnRvTG93ZXJDYXNlKCkpID4gLTEpCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdvb29IaWRkZW4nKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnb29vSGlkZGVuJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gSWYgbm8gU2VhcmNoU3RyaW5nIGlzIGdpdmVuLCBoaWRlIGFsbCBzdWJzZXJ2aWNlcyB3aXRoIHRoZSBjbGFzcyBvb29Jbml0aWFsSGlkZGVuLgogICAgICAgICAgICBpZiAoU2VhcmNoU3RyaW5nID09ICcnKSB7CiAgICAgICAgICAgICAgICAkKCcuRGlhbG9nIC5vb29Jbml0aWFsSGlkZGVuJykuYWRkQ2xhc3MoJ29vb0hpZGRlbicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBUT0RPIFJlYnVpbGQgdGhlIGJyZWFkY3J1bWIuIFNob3cgb3JpZ2luYWwgYnJlYWRjcnVtYiBpZiBubyBzZWFyY2ggc3RyaW5nIGlzIGdpdmVuLgogICAgICAgIH0pOwoKICAgICAgICAvLyBTaG93IHRoZSBxdWljayBhY3Rpb24gdmlldyBmb3IgYSBzZXJ2aWNlLgogICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcub29vRGVzY2lwdGlvbkhlYWRlciA+IGknLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gVG9nZ2xlIHRoZSBzaWRlYmFyIGluZm9ybWF0aW9uIGZvciBtb2JpbGUgdmlld3MuCiAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJyNvb29EZXRhaWxlZFRvZ2dsZVNpZGViYXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKCEkKCcub29vRGV0YWlsZWRSaWdodCcpLmlzKCc6dmlzaWJsZScpKSB7CiAgICAgICAgICAgICAgICAkKCcub29vRGV0YWlsZWRSaWdodCcpLnNob3coKTsKICAgICAgICAgICAgICAgICQoJy5vb29EZXRhaWxlZExlZnQnKS5oaWRlKCk7CiAgICAgICAgICAgICAgICAkKCcub29vU2VydmljZUJyZWFkY3J1bWJXcmFwJykuaGlkZSgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJCgnLm9vb0RldGFpbGVkTGVmdCcpLnNob3coKTsKICAgICAgICAgICAgICAgICQoJy5vb29EZXRhaWxlZFJpZ2h0JykuaGlkZSgpOwogICAgICAgICAgICAgICAgJCgnLm9vb1NlcnZpY2VCcmVhZGNydW1iV3JhcCcpLnNob3coKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgIH0KCiAgICBUYXJnZXROUy5EaXNwbGF5U2VydmljZUxpc3QgPSBmdW5jdGlvbihTZXJ2aWNlSUQpIHsKICAgICAgICB2YXIgU3Vic2VydmljZXMgPSBUYXJnZXROUy5HZXRTdWJzZXJ2aWNlcyhTZXJ2aWNlSUQpOwoKICAgICAgICAvLyBJZiB0aGVyZSBpcyBvbmx5IG9uZSBzdWJzZXJ2aWNlLCBqdW1wIHN0cmFpZ2h0IGludG8gdGhhdCBsaXN0LgogICAgICAgIGlmIChTdWJzZXJ2aWNlcy5sZW5ndGggPT0gMSkgewogICAgICAgICAgICB2YXIgU3Vic2VydmljZSA9IEpTT04ucGFyc2UoQ29yZS5Db25maWcuR2V0KCdTZXJ2aWNlTGlzdCcpKVtTdWJzZXJ2aWNlc107CgogICAgICAgICAgICAvLyBPbmx5IGp1bXAgZGVlcGVyIGlmIHRoZSBzdWJzZXJ2aWNlIGRvZXMgbm90IGhhdmUgdGhlIG9wdGlvbiB0byBjcmVhdGUgYSB0aWNrZXQgZm9yIGl0c2VsZi4KICAgICAgICAgICAgaWYgKCFTdWJzZXJ2aWNlLlRpY2tldFR5cGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBUYXJnZXROUy5EaXNwbGF5U2VydmljZUxpc3QoU3Vic2VydmljZXNbMF0pOwogICAgICAgICAgICB9CiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gc3Vic2VydmljZSwgc2hvdyBhIGRldGFpbGVkIHZpZXcgb2YgdGhhdCBzZXJ2aWNlLgogICAgICAgIH0gZWxzZSBpZiAoU3Vic2VydmljZXMubGVuZ3RoID09IDApIHsKICAgICAgICAgICAgcmV0dXJuIFRhcmdldE5TLkRpc3BsYXlEZXRhaWxlZFNlcnZpY2UoU2VydmljZUlEKTsKICAgICAgICB9CgogICAgICAgICRsKCcub29vU2VydmljZVdyYXBwZXInKS5odG1sKCcnKTsKICAgICAgICAkbCgnLm9vb1NlcnZpY2VSZXN1bHQnKS5yZW1vdmVDbGFzcygnb29vSGlkZGVuJyk7CiAgICAgICAgLy8gJCgnLm9vb1NlcnZpY2VCcmVhZGNydW1iJykuYWRkQ2xhc3MoJ29vb0hpZGRlbicpOwogICAgICAgICRsKCcub29vU2VydmljZUZpZWxkU2VhcmNoID4gaW5wdXQnKS5mb2N1cygpOyAvLyBBdXRvZm9jdXMgdGhlIHNlYXJjaCBmaWVsZC4KICAgICAgICAvLyAkKCcub29vU2VydmljZUZpZWxkJykucmVtb3ZlQ2xhc3MoJ29vb0hpZGRlbicpOwogICAgICAgICRsKCcub29vU2VydmljZUZpZWxkU2VhcmNoJykucmVtb3ZlQ2xhc3MoJ29vb0hpZGRlbicpOwogICAgICAgICRsKCcuRGlhbG9nJykucmVtb3ZlQ2xhc3MoJ29vb0RldGFpbGVkVmlldycpOwoKICAgICAgICAvLyBHZXQgYWxsIHN1YnNlcnZpY2VzIGZvciB0aGUgc2VhcmNoIGZ1bmN0aW9uLgogICAgICAgIHZhciBBbGxTdWJzZXJ2aWNlcyA9IFRhcmdldE5TLkdldEFsbFN1YnNlcnZpY2VzKFNlcnZpY2VJRCk7CiAgICAgICAgZm9yICh2YXIgU3Vic2VydmljZUlEIG9mIEFsbFN1YnNlcnZpY2VzKSB7CiAgICAgICAgICAgIC8vIElmIHRoZSBTdWJzZXJ2aWNlSUQgaXMgbm90IHdpdGhpbiB0aGUgU3Vic2VydmljZXMgYXJyYXksIGFkZCB0aGUgY2xhc3MgJ29vb0hpZGRlbicuCiAgICAgICAgICAgIHZhciBDbGFzcyA9ICcnOwogICAgICAgICAgICBpZiAoU3Vic2VydmljZXMuaW5kZXhPZihTdWJzZXJ2aWNlSUQpID09IC0xKSB7CiAgICAgICAgICAgICAgICBDbGFzcyA9ICdvb29IaWRkZW4gb29vSW5pdGlhbEhpZGRlbic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIERpc3BsYXlTZXJ2aWNlSFRNTCA9IFRhcmdldE5TLkRpc3BsYXlTZXJ2aWNlKFN1YnNlcnZpY2VJRCwgQ2xhc3MpOwogICAgICAgICAgICAkKERpc3BsYXlTZXJ2aWNlSFRNTCkuYXBwZW5kVG8oJGwoJy5vb29TZXJ2aWNlV3JhcHBlcicpKTsKICAgICAgICB9CgogICAgICAgIFRhcmdldE5TLkNyZWF0ZUJyZWFkY3J1bWIoU2VydmljZUlEKTsKICAgIH0KCiAgICBUYXJnZXROUy5EaXNwbGF5U2VydmljZSA9IGZ1bmN0aW9uKFNlcnZpY2VJRCwgQ2xhc3MgPSAnJykgewogICAgICAgIHZhciBTZXJ2aWNlID0gSlNPTi5wYXJzZShDb3JlLkNvbmZpZy5HZXQoJ1NlcnZpY2VMaXN0JykpW1NlcnZpY2VJRF07CiAgICAgICAgdmFyIEJhc2VsaW5rID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpOwogICAgICAgIHZhciBDb250YWluZXIgPSBDb3JlLlRlbXBsYXRlLlJlbmRlcignQ3VzdG9tZXIvVGlsZVNlcnZpY2VDYXRhbG9nQ29udGFpbmVyJywgewogICAgICAgICAgICBJRDogU2VydmljZUlELAogICAgICAgICAgICBOYW1lOiAgU2VydmljZS5OYW1lU2hvcnQsCiAgICAgICAgICAgIERlc2NyaXB0aW9uU2hvcnQ6IFNlcnZpY2UuRGVzY3JpcHRpb25TaG9ydCwKICAgICAgICAgICAgTnVtYmVyT2ZTdWJzZXJ2aWNlczogVGFyZ2V0TlMuR2V0U3Vic2VydmljZXMoU2VydmljZUlEKS5sZW5ndGgsCiAgICAgICAgICAgIFRpY2tldFR5cGU6IFNlcnZpY2UuVGlja2V0VHlwZSwKICAgICAgICAgICAgQmFzZWxpbms6IEJhc2VsaW5rLAogICAgICAgICAgICBOb3RTZWxlY3RhYmxlOiBTZXJ2aWNlLk5vdFNlbGVjdGFibGUsCiAgICAgICAgICAgIENsYXNzOiBDbGFzcywKICAgICAgICAgICAgS2V5d29yZHM6IFNlcnZpY2UuS2V5d29yZHMKICAgICAgICB9KTsKCiAgICAgICAgcmV0dXJuIENvbnRhaW5lcjsKICAgIH0KCiAgICBUYXJnZXROUy5EaXNwbGF5RGV0YWlsZWRTZXJ2aWNlID0gZnVuY3Rpb24oU2VydmljZUlEKSB7CiAgICAgICAgJGwoJy5vb29TZXJ2aWNlV3JhcHBlcicpLmh0bWwoJycpOwogICAgICAgIHZhciBTZXJ2aWNlID0gSlNPTi5wYXJzZShDb3JlLkNvbmZpZy5HZXQoJ1NlcnZpY2VMaXN0JykpW1NlcnZpY2VJRF07CiAgICAgICAgdmFyIEJhc2VsaW5rID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpOwogICAgICAgIHZhciBJZnJhbWVMaW5rID0gQmFzZWxpbmsgKyAnQWN0aW9uPUN1c3RvbWVyVGlsZVNlcnZpY2VDYXRhbG9nO1N1YmFjdGlvbj1IVE1MVmlldztTZXJ2aWNlSUQ9JyArIFNlcnZpY2VJRCArICc7JyArIENvcmUuQ29uZmlnLkdldCgnU2Vzc2lvbk5hbWUnKSArICc9JyArIENvcmUuQ29uZmlnLkdldCgnU2Vzc2lvbklEJykKICAgICAgICAvLyBUT0RPOiBSZWZhY3Rvci9yZW1vdmUgdGhpcy4KICAgICAgICB2YXIgSWZyYW1lTGlua0R5bmFtaWNGaWVsZCA9IEJhc2VsaW5rICsgJ0FjdGlvbj1DdXN0b21lclRpbGVTZXJ2aWNlQ2F0YWxvZztTdWJhY3Rpb249RHluYW1pY0ZpZWxkVmlldztTZXJ2aWNlSUQ9JyArIFNlcnZpY2VJRCArICc7JyArIENvcmUuQ29uZmlnLkdldCgnU2Vzc2lvbk5hbWUnKSArICc9JyArIENvcmUuQ29uZmlnLkdldCgnU2Vzc2lvbklEJykKCiAgICAgICAgLy8gQ29udmVydCBtaW51dGVzIHRvIGhvdXJzIGFuZCByb3VuZCB0byB0aGUgZmlyc3QgZGVjaW1hbCBwbGFjZS4KICAgICAgICB2YXIgU29sdXRpb25UaW1lLCBGaXJzdFJlc3BvbnNlVGltZTsKICAgICAgICBpZiAoU2VydmljZS5Tb2x1dGlvblRpbWUgJiYgIWlzTmFOKFNlcnZpY2UuU29sdXRpb25UaW1lKSkgewogICAgICAgICAgICBTb2x1dGlvblRpbWUgPSBTZXJ2aWNlLlNvbHV0aW9uVGltZSAvIDYwOwogICAgICAgICAgICBTb2x1dGlvblRpbWUgPSBNYXRoLnJvdW5kKFNvbHV0aW9uVGltZSAqIDEwKSAvIDEwOwogICAgICAgIH0KCiAgICAgICAgaWYgKFNlcnZpY2UuRmlyc3RSZXNwb25zZVRpbWUgJiYgIWlzTmFOKFNlcnZpY2UuRmlyc3RSZXNwb25zZVRpbWUpKSB7CiAgICAgICAgICAgIEZpcnN0UmVzcG9uc2VUaW1lID0gU2VydmljZS5GaXJzdFJlc3BvbnNlVGltZSAvIDYwOwogICAgICAgICAgICBGaXJzdFJlc3BvbnNlVGltZSA9IE1hdGgucm91bmQoRmlyc3RSZXNwb25zZVRpbWUgKiAxMCkgLyAxMDsKICAgICAgICB9CgogICAgICAgIC8vIEdldCBhbGwgc3Vic2VydmljZXMuCiAgICAgICAgdmFyIFN1YnNlcnZpY2VzID0gVGFyZ2V0TlMuR2V0U3Vic2VydmljZXMoU2VydmljZUlEKTsKCiAgICAgICAgLy8gRm9yIGVhY2ggU3Vic2VydmljZSwgZ2V0IHRoZSBIVE1MLgogICAgICAgIHZhciBTdWJzZXJ2aWNlc0hUTUwgPSBbXTsKICAgICAgICBmb3IgKHZhciBTdWJzZXJ2aWNlSUQgb2YgU3Vic2VydmljZXMpIHsKICAgICAgICAgICAgU3Vic2VydmljZXNIVE1MLnB1c2goVGFyZ2V0TlMuRGlzcGxheVNlcnZpY2UoU3Vic2VydmljZUlEKSk7CiAgICAgICAgfQoKICAgICAgICB2YXIgQWRkaXRpb25hbEluZm9ybWF0aW9uOwogICAgICAgIGlmIChTZXJ2aWNlLldvcmtpbmdIb3VycyB8fCBTb2x1dGlvblRpbWUgfHwgRmlyc3RSZXNwb25zZVRpbWUgfHwgU2VydmljZS5EeW5hbWljRmllbGQpIHsKICAgICAgICAgICAgQWRkaXRpb25hbEluZm9ybWF0aW9uID0gMTsKICAgICAgICB9CgogICAgICAgIHZhciBEZXRhaWxlZCA9IENvcmUuVGVtcGxhdGUuUmVuZGVyKCdDdXN0b21lci9UaWxlU2VydmljZUNhdGFsb2dEZXRhaWxlZCcsIHsKICAgICAgICAgICAgSUQ6IFNlcnZpY2VJRCwKICAgICAgICAgICAgTmFtZTogIFNlcnZpY2UuTmFtZVNob3J0LAogICAgICAgICAgICBEZXNjcmlwdGlvblNob3J0OiBTZXJ2aWNlLkRlc2NyaXB0aW9uU2hvcnQsCiAgICAgICAgICAgIElmcmFtZUxpbms6IElmcmFtZUxpbmssCiAgICAgICAgICAgIElmcmFtZUxpbmtEeW5hbWljRmllbGQ6IElmcmFtZUxpbmtEeW5hbWljRmllbGQsICAvLyBUT0RPOiBEZWxldGUgdGhpcy4KICAgICAgICAgICAgRHluYW1pY0ZpZWxkTGlzdDogU2VydmljZS5EeW5hbWljRmllbGQsCiAgICAgICAgICAgIFdvcmtpbmdIb3VyczogU2VydmljZS5Xb3JraW5nSG91cnMsCiAgICAgICAgICAgIFNvbHV0aW9uVGltZTogU29sdXRpb25UaW1lLAogICAgICAgICAgICBGaXJzdFJlc3BvbnNlVGltZTogRmlyc3RSZXNwb25zZVRpbWUsCiAgICAgICAgICAgIEFkZGl0aW9uYWxJbmZvcm1hdGlvbjogQWRkaXRpb25hbEluZm9ybWF0aW9uLAogICAgICAgICAgICBUeXBlTGlzdDogU2VydmljZS5UaWNrZXRUeXBlLAogICAgICAgICAgICBCYXNlbGluazogQmFzZWxpbmssCiAgICAgICAgICAgIEZBUUFydGljbGVMaXN0OiBTZXJ2aWNlLkZBUXMsCiAgICAgICAgICAgIE51bWJlck9mU3Vic2VydmljZXM6IFRhcmdldE5TLkdldFN1YnNlcnZpY2VzKFNlcnZpY2VJRCkubGVuZ3RoLAogICAgICAgICAgICBTdWJzZXJ2aWNlc0hUTUw6IFN1YnNlcnZpY2VzSFRNTCwKICAgICAgICB9KTsKCiAgICAgICAgJChEZXRhaWxlZCkuYXBwZW5kVG8oJGwoJy5vb29TZXJ2aWNlV3JhcHBlcicpKTsKCiAgICAgICAgLy8gUmVzaXplIGlGcmFtZS4KICAgICAgICB2YXIgSUZyYW1lID0gJGwoJy5vb29TZXJ2aWNlV3JhcHBlcicpLmZpbmQoJ1tkYXRhLXNlcnZpY2UtaWQ9IicgKyBTZXJ2aWNlSUQgKyAnIl0nKS5maW5kKCdpZnJhbWUnKTsKICAgICAgICBSZXNpemVJZnJhbWUoSUZyYW1lKTsKICAgICAgICBDb3JlLlVJLkluaXQoKTsKCiAgICAgICAgVGFyZ2V0TlMuQ3JlYXRlQnJlYWRjcnVtYihTZXJ2aWNlSUQpOwoKICAgICAgICAkbCgnLkRpYWxvZycpLmFkZENsYXNzKCdvb29EZXRhaWxlZFZpZXcnKTsKICAgICAgICAkbCgnLm9vb1NlcnZpY2VSZXN1bHQnKS5hZGRDbGFzcygnb29vSGlkZGVuJyk7CiAgICB9CgogICAgVGFyZ2V0TlMuQ3JlYXRlQnJlYWRjcnVtYiA9IGZ1bmN0aW9uKFNlcnZpY2VJRCkgewogICAgICAgIHZhciBTZXJ2aWNlID0gSlNPTi5wYXJzZShDb3JlLkNvbmZpZy5HZXQoJ1NlcnZpY2VMaXN0JykpOwogICAgICAgIHZhciBTZWxlY3RlZFNlcnZpY2UgPSBTZXJ2aWNlW1NlcnZpY2VJRF07CgogICAgICAgIGlmIChTZWxlY3RlZFNlcnZpY2UpIHsKICAgICAgICAgICAgJGwoJy5vb29TZXJ2aWNlUmVzdWx0JykudGV4dChDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnUmVzdWx0cyBmb3IgJXMnLCBTZWxlY3RlZFNlcnZpY2UuTmFtZVNob3J0KSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGwoJy5vb29TZXJ2aWNlUmVzdWx0JykudGV4dChDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnUmVzdWx0cycpKTsKICAgICAgICB9CgogICAgICAgIHZhciBMaVN0cmluZyA9ICcnOwoKICAgICAgICAvLyBBZGQgdGhlIGN1cnJlbnQgc2VydmljZSB0byB0aGUgbGlzdC4KICAgICAgICBpZiAoU2VydmljZUlEICE9ICdBbGwnKSB7CiAgICAgICAgICAgIExpU3RyaW5nICs9ICc8bGkgZGF0YS1zZXJ2aWNlLWlkPSInICsgU2VsZWN0ZWRTZXJ2aWNlLlNlcnZpY2VJRCArICciIGNsYXNzPSJvb29TZXJ2aWNlSURBdmFpbGFibGUgb29vU2VydmljZUlEU2VsZWN0ZWQiPicgKyBTZWxlY3RlZFNlcnZpY2UuTmFtZVNob3J0ICsgJzwvbGk+JzsKICAgICAgICB9CgogICAgICAgIC8vIEFkZCAnQWxsJyB0byB0aGUgbGlzdC4KICAgICAgICBMaVN0cmluZyArPSAnPGxpIGRhdGEtc2VydmljZS1pZD0iQWxsIiBjbGFzcz0ib29vU2VydmljZUlEQXZhaWxhYmxlICcgKyAoIFNlcnZpY2VJRCA9PSAnQWxsJyAgPyAnb29vU2VydmljZUlEU2VsZWN0ZWQnIDogJycpICsgJyI+JyArIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCdBbGwnKSArICc8L2xpPic7CgogICAgICAgIC8vIEdldCBhbGwgbWFpbiBsZXZlbCBzZXJ2aWNlcy4KICAgICAgICBmb3IgKHZhciBTZXJ2aWNlSURMb29wIGluIFNlcnZpY2UpIHsKICAgICAgICAgICAgaWYgKFNlcnZpY2VbU2VydmljZUlETG9vcF0uUGFyZW50SUQpIGNvbnRpbnVlOyAgLy8gU2tpcCBpZiB0aGUgc2VydmljZSBoYXMgYSBwYXJlbnQuCiAgICAgICAgICAgIGlmIChTZXJ2aWNlSURMb29wID09IFNlcnZpY2VJRCkgY29udGludWU7ICAvLyBEb24ndCBzaG93IHRoZSBjdXJyZW50IHNlcnZpY2UgdHdpY2UuCiAgICAgICAgICAgIGlmICghU2VydmljZVtTZXJ2aWNlSURMb29wXS5OYW1lU2hvcnQpIGNvbnRpbnVlOyAgLy8gVE9ETy9GSVhNRTogV29ya2Fyb3VuZCBTdGVmYW4gUi4gVGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSwgZml4IGluIC5wbS4KCiAgICAgICAgICAgIExpU3RyaW5nICs9ICc8bGkgZGF0YS1zZXJ2aWNlLWlkPSInICsgU2VydmljZUlETG9vcCArICciIGNsYXNzPSJvb29TZXJ2aWNlSURBdmFpbGFibGUiPicgKyBTZXJ2aWNlW1NlcnZpY2VJRExvb3BdLk5hbWVTaG9ydCArICc8L2xpPic7CiAgICAgICAgfQoKICAgICAgICAkbCgnLm9vb0JyZWFkY3J1bWJTZXJ2aWNlTGlzdCcpLmh0bWwoTGlTdHJpbmcpOwoKICAgICAgICAvLyBTY3JvbGwgc2VydmljZXMgbGlzdC4KICAgICAgICBjb25zdCBnb0xlZnQgPSBjcnVtYiA9PiBjcnVtYi5zY3JvbGxMZWZ0KGNydW1iLnNjcm9sbExlZnQoKSAtIGNydW1iLndpZHRoKCkpOwogICAgICAgIGNvbnN0IGdvUmlnaHQgPSBjcnVtYiA9PiBjcnVtYi5zY3JvbGxMZWZ0KGNydW1iLnNjcm9sbExlZnQoKSArIGNydW1iLndpZHRoKCkpOwogICAgICAgICQoJy5vb29TY3JvbGxMZWZ0JykuY2xpY2soCiAgICAgICAgICAgIGUgPT4gZ29MZWZ0KCQoZS50YXJnZXQpLnBhcmVudCgpLmZpbmQoJy5vb29TZXJ2aWNlQnJlYWRjcnVtYkZpZWxkJykpCiAgICAgICAgKTsKICAgICAgICAkKCcub29vU2Nyb2xsUmlnaHQnKS5jbGljaygKICAgICAgICAgICAgZSA9PiBnb1JpZ2h0KCQoZS50YXJnZXQpLnBhcmVudCgpLmZpbmQoJy5vb29TZXJ2aWNlQnJlYWRjcnVtYkZpZWxkJykpCiAgICAgICAgKTsKICAgICAgICAkKCcub29vU2VydmljZUJyZWFkY3J1bWJGaWVsZCcpLm9uKCd3aGVlbCcsIGUgPT4gewogICAgICAgICAgICBzd2l0Y2godHJ1ZSkgewogICAgICAgICAgICAgICAgY2FzZSBlLm9yaWdpbmFsRXZlbnQuZGVsdGFZIDwgMDoKICAgICAgICAgICAgICAgICAgICBnb0xlZnQoJChlLmRlbGVnYXRlVGFyZ2V0KSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIGUub3JpZ2luYWxFdmVudC5kZWx0YVkgPiAwOgogICAgICAgICAgICAgICAgICAgIGdvUmlnaHQoJChlLmRlbGVnYXRlVGFyZ2V0KSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIH0pCiAgICB9CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICogQG5hbWUgR2V0U3Vic2VydmljZXMKICAgICAqIEBtZW1iZXJvZiBDb3JlLkN1c3RvbWVyLlRpbGVTZXJ2aWNlQ2F0YWxvZwogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gU2VydmljZUlEIC0gSUQgb2YgdGhlIHNlcnZpY2UKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgIEdldCB0aGUgc3Vic2VydmljZXMgb2YgYSBzZXJ2aWNlLgogICAgICovCiAgICBUYXJnZXROUy5HZXRTdWJzZXJ2aWNlcyA9IGZ1bmN0aW9uKFNlcnZpY2VJRCkgewogICAgICAgIHZhciBTZXJ2aWNlID0gSlNPTi5wYXJzZShDb3JlLkNvbmZpZy5HZXQoJ1NlcnZpY2VMaXN0JykpOwoKICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggYWxsIHNlcnZpY2VzIGFuZCBnZXQgYWxsIHN1YnNlcnZpY2VzIG9mIFNlcnZpY2VJRC4KICAgICAgICB2YXIgVW5vcmRlcmVkU3Vic2VydmljZXMgPSB7fTsKICAgICAgICBmb3IgKHZhciBDaGlsZElEIGluIFNlcnZpY2UpIHsKICAgICAgICAgICAgaWYgKFNlcnZpY2VJRCA9PSBTZXJ2aWNlW0NoaWxkSURdLlBhcmVudElEKSB7CiAgICAgICAgICAgICAgICBVbm9yZGVyZWRTdWJzZXJ2aWNlc1tTZXJ2aWNlW0NoaWxkSURdLk5hbWVTaG9ydF0gPSBDaGlsZElEOwogICAgICAgICAgICB9IGVsc2UgaWYgKFNlcnZpY2VJRCA9PSAnQWxsJykgewogICAgICAgICAgICAgICAgLy8gSWYgdGhlIGFsbCBmaWx0ZXIgaXMgc2V0LCBnZXQgYWxsIHNlcnZpY2VzLgogICAgICAgICAgICAgICAgVW5vcmRlcmVkU3Vic2VydmljZXNbU2VydmljZVtDaGlsZElEXS5OYW1lU2hvcnRdID0gQ2hpbGRJRDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gT3JkZXIgYWxsIFN1YnNlcnZpY2VzIGJ5IG5hbWUuCiAgICAgICAgdmFyIFN1YnNlcnZpY2VzID0gT2JqZWN0LmtleXMoVW5vcmRlcmVkU3Vic2VydmljZXMpLnNvcnQoKS5yZWR1Y2UoCiAgICAgICAgICAgIGZ1bmN0aW9uIChPYmosIEtleSkgewogICAgICAgICAgICAgICAgT2JqW0tleV0gPSBVbm9yZGVyZWRTdWJzZXJ2aWNlc1tLZXldOwogICAgICAgICAgICAgICAgcmV0dXJuIE9iajsKICAgICAgICAgICAgfSwge30KICAgICAgICApOwoKICAgICAgICAvLyBQdXNoIHNlcnZpY2VzIG9mIGEgc3BlY2lmaWMgdGlja2V0IHR5cGUgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4KICAgICAgICB2YXIgVGlja2V0VHlwZUZpbHRlciA9IENvcmUuQ29uZmlnLkdldCgnU29ydEJ5VGlja2V0VHlwZScpOwogICAgICAgIGlmIChUaWNrZXRUeXBlRmlsdGVyKSB7CiAgICAgICAgICAgIHZhciBTb3J0QnlUaWNrZXRUeXBlID0ge307CiAgICAgICAgICAgICQuZWFjaCggU3Vic2VydmljZXMsIGZ1bmN0aW9uKCBTZXJ2aWNlTmFtZSwgU2VydmljZUlEICkgewogICAgICAgICAgICAgICAgLy8gRmlsdGVyIGZvciBzZXJ2aWNlcyB3aXRoIGEgc2luZ2xlIHRpY2tldCB0eXBlIGFuZCBvbmx5IG1hdGNoIGlmIGl0J3MgdGhlIHRpY2tldCB0eXBlIHdlIGFyZSBsb29raW5nIGZvci4KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlW1NlcnZpY2VJRF0uVGlja2V0VHlwZSAmJgogICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKFNlcnZpY2VbU2VydmljZUlEXS5UaWNrZXRUeXBlKS5sZW5ndGggPT0gMSAmJgogICAgICAgICAgICAgICAgICAgIFNlcnZpY2VbU2VydmljZUlEXS5UaWNrZXRUeXBlW1RpY2tldFR5cGVGaWx0ZXJdCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgc3Vic2VydmljZSBmcm9tIHRoZSBtYWluIGxpc3QuCiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFN1YnNlcnZpY2VzW1NlcnZpY2VOYW1lXTsKICAgICAgICAgICAgICAgICAgICBTb3J0QnlUaWNrZXRUeXBlW1NlcnZpY2VOYW1lXSA9IFNlcnZpY2VJRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBBZGQgYWxsIHJlbW92ZWQgc3Vic2VydmljZXMgYmFjayB0byB0aGUgbWFpbiBsaXN0LgogICAgICAgICAgICAkLmV4dGVuZChTdWJzZXJ2aWNlcywgU29ydEJ5VGlja2V0VHlwZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhTdWJzZXJ2aWNlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICogQG5hbWUgR2V0QWxsU3Vic2VydmljZXMKICAgICAqIEBtZW1iZXJvZiBDb3JlLkN1c3RvbWVyLlRpbGVTZXJ2aWNlQ2F0YWxvZwogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gU2VydmljZUlEIC0gSUQgb2YgdGhlIHNlcnZpY2UKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgIEdldCBhbGwgc3Vic2VydmljZXMgcmVjdXJzaXZlbHkgb2YgYSBzZXJ2aWNlLgogICAgICovCiAgICBUYXJnZXROUy5HZXRBbGxTdWJzZXJ2aWNlcyA9IGZ1bmN0aW9uKFNlcnZpY2VJRCkgewogICAgICAgIHZhciBTZXJ2aWNlID0gSlNPTi5wYXJzZShDb3JlLkNvbmZpZy5HZXQoJ1NlcnZpY2VMaXN0JykpOwoKICAgICAgICAvLyBHZXQgYWxsIHN1YnNlcnZpY2VzIG9mIFNlcnZpY2VJRC4KICAgICAgICB2YXIgU3Vic2VydmljZXMgPSBUYXJnZXROUy5HZXRTdWJzZXJ2aWNlcyhTZXJ2aWNlSUQpOwogICAgICAgIHZhciBBbGxTdWJzZXJ2aWNlcyA9IFN1YnNlcnZpY2VzOwoKICAgICAgICAvLyBXaGlsZSB0aGVyZSBhcmUgc3RpbGwgc3Vic2VydmljZXMsIGdldCBhbGwgc3Vic2VydmljZXMgb2YgdGhlIGN1cnJlbnQgc3Vic2VydmljZXMuCiAgICAgICAgd2hpbGUgKFN1YnNlcnZpY2VzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgdmFyIE5ld1N1YnNlcnZpY2VzID0gW107CiAgICAgICAgICAgICQuZWFjaChTdWJzZXJ2aWNlcywgZnVuY3Rpb24oSW5kZXgsIFN1YnNlcnZpY2VJRCkgewogICAgICAgICAgICAgICAgdmFyIFN1YlN1YnNlcnZpY2VzID0gVGFyZ2V0TlMuR2V0U3Vic2VydmljZXMoU3Vic2VydmljZUlEKTsKICAgICAgICAgICAgICAgIE5ld1N1YnNlcnZpY2VzID0gTmV3U3Vic2VydmljZXMuY29uY2F0KFN1YlN1YnNlcnZpY2VzKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIFN1YnNlcnZpY2VzID0gTmV3U3Vic2VydmljZXM7CiAgICAgICAgICAgIEFsbFN1YnNlcnZpY2VzID0gQWxsU3Vic2VydmljZXMuY29uY2F0KFN1YnNlcnZpY2VzKTsKICAgICAgICB9CgogICAgICAgIC8vIFJlbW92ZSBhbGwgZHVwbGljYXRlcyAoaW1wb3J0YW50IGZvciB0aGUgJ0FsbCcgZmlsdGVyKS4KICAgICAgICBBbGxTdWJzZXJ2aWNlcyA9IEFsbFN1YnNlcnZpY2VzLmZpbHRlcihmdW5jdGlvbiAoSXRlbSwgSW5kZXgsIEFycmF5KSB7CiAgICAgICAgICAgIHJldHVybiBBcnJheS5pbmRleE9mKEl0ZW0pID09PSBJbmRleDsKICAgICAgICB9KTsKCiAgICAgICAgcmV0dXJuIEFsbFN1YnNlcnZpY2VzOwogICAgfQoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIENhbGN1bGF0ZUhlaWdodAogICAgICogQG1lbWJlcm9mIENvcmUuQ3VzdG9tZXIuVGlsZVNlcnZpY2VDYXRhbG9nCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7RE9NT2JqZWN0fSBJZnJhbWUgLSBET00gcmVwcmVzZW50YXRpb24gb2YgYW4gaWZyYW1lCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgUmVzaXplcyBJZnJhbWUgdG8gaXRzIG1heCBpbm5lciBoZWlnaHQuCiAgICAgKi8KICAgIGZ1bmN0aW9uIFJlc2l6ZUlmcmFtZShJZnJhbWUpIHsKICAgICAgICBJZnJhbWUgPSBpc0pRdWVyeU9iamVjdChJZnJhbWUpID8gSWZyYW1lLmdldCgwKSA6IElmcmFtZTsKCiAgICAgICAgJChJZnJhbWUpLm9uKCdsb2FkJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciAkSWZyYW1lQ29udGVudCA9ICQoSWZyYW1lLmNvbnRlbnREb2N1bWVudCB8fCBJZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudCksCiAgICAgICAgICAgICAgICBOZXdIZWlnaHQgPSAkSWZyYW1lQ29udGVudC5oZWlnaHQoKTsKICAgICAgICAgICAgaWYgKCFOZXdIZWlnaHQgfHwgaXNOYU4oTmV3SGVpZ2h0KSkgewogICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gMTAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKE5ld0hlaWdodCA+IDYwMCkgewogICAgICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IDYwMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgTmV3SGVpZ2h0ID0gcGFyc2VJbnQoTmV3SGVpZ2h0LCAxMCk7CiAgICAgICAgICAgICQoSWZyYW1lKS5oZWlnaHQoTmV3SGVpZ2h0ICsgJ3B4Jyk7CiAgICAgICAgfSk7CgogICAgfQoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oQ29yZS5DdXN0b21lci5UaWxlU2VydmljZUNhdGFsb2cgfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/Core.Dashboard.TileServiceCatalog.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi5vb29UaWxlX1NlcnZpY2VDYXRhbG9nID4gaDIgewogICAgbWFyZ2luLXRvcDogMTZweDsKICAgIG1hcmdpbi1ib3R0b206IDE2cHg7Cn0KCi5vb29QYXJlbnRTZXJ2aWNlTGlzdCB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZ2FwOiAxNnB4Owp9Cgoub29vUGFyZW50U2VydmljZUxpc3QgPiBsaSB7CiAgICB3b3JkLXdyYXA6IGFueXdoZXJlOwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgIHBhZGRpbmc6IDU2cHggMzJweCAzMnB4OwogICAgZ2FwOiA4cHg7CiAgICB3aWR0aDogMjAwcHg7CiAgICBoZWlnaHQ6IDEyOHB4OwogICAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7Cn0KCi5vb29QYXJlbnRTZXJ2aWNlTGlzdCA+IC5vb29TZXJ2aWNlTW9yZSB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNywgMTI4LCAxNTcsIDAuMDUpOwogICAgY29sb3I6IHZhcigtLWNvbFRleHRMaWdodCk7CiAgICBvdXRsaW5lOiBub25lOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBwYWRkaW5nOiAwcHg7CiAgICBnYXA6IDhweDsKfQoKLm9vb1NlcnZpY2VNb3JlOmhvdmVyIHsKICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsKICAgIGdhcDogOHB4OwogICAgY29sb3I6IHZhcigtLWNvbE1haW5MaWdodCkgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7Cn0KCi5vb29QYXJlbnRTZXJ2aWNlTGlzdCA+IGxpOmhvdmVyIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIC8qIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbE1haW5MaWdodCk7ICovCiAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tY29sTWFpbkxpZ2h0KTsKICAgIGNvbG9yOiB2YXIoLS1jb2xNYWluTGlnaHQpOwp9Cgoub29vUGFyZW50U2VydmljZUxpc3QgPiBsaS5vb29TZXJ2aWNlTW9yZTpob3ZlciB7CiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jb2xNYWluTGlnaHQpOwp9IAoKLm9vb1NlcnZpY2VNb3JlOmhvdmVyID4gLm9vb1NlcnZpY2VNb3JlU2VhcmNoID4gc3BhbiwKLm9vb1NlcnZpY2VNb3JlOmhvdmVyID4gLm9vb1NlcnZpY2VNb3JlSW5mbyB7CiAgICBkaXNwbGF5OiBub25lOwp9Cgoub29vU2VydmljZU1vcmU6aG92ZXIgPiAub29vU2VydmljZU1vcmVTZWFyY2ggewogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBmb250LXNpemU6IDI1cHg7CiAgICBjb2xvcjogdmFyKC0tY29sTWFpbkxpZ2h0KTsKfQoKLm9vb1NlcnZpY2VNb3JlU2VhcmNoIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogOHB4OwogICAgd2lkdGg6IDc1cHg7CiAgICBoZWlnaHQ6IDE4cHg7Cn0KCnVsLm9vb0NoaWxkU2VydmljZUxpc3QgPiBsaTpub3QoOmZpcnN0LWNoaWxkKSB7CiAgICBtYXJnaW4tbGVmdDogMTJweDsKICAgIHBhZGRpbmc6IDRweCA0cHg7Cn0KCnVsLm9vb0JyZWFkY3J1bWJTZXJ2aWNlTGlzdCA+IGxpOmZpcnN0LWNoaWxkIHsKICAgIG1hcmdpbi1sZWZ0OiA4cHg7Cn0KCi5vb29TZXJ2aWNlQnJlYWRjcnVtYldyYXAgewogICAgcGFkZGluZy10b3A6IDIwcHg7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiBub3dyYXA7CiAgICB3aWR0aDogMTAwJTsKfQoKLm9vb1NlcnZpY2VCcmVhZGNydW1iIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWF4LXdpZHRoOiBjYWxjKCA5MCUgLSAxMDBweCApOwp9Cgoub29vU2VydmljZUJyZWFkY3J1bWJGaWVsZCB7CiAgICBoZWlnaHQ6IDUwcHg7CiAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICBvdmVyZmxvdy15OiBoaWRkZW47Cn0KCi5vb29TY3JvbGxMZWZ0LCAub29vU2Nyb2xsUmlnaHQgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZy10b3A6IDNweDsKICAgIGZvbnQtZmFtaWx5OiAnb3RvYm8nICFpbXBvcnRhbnQ7CiAgICBzcGVhazogbm9uZTsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDsKICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLm9vb1Njcm9sbExlZnQgewogICAgY29udGVudDogIlxlOTAzIjsKICAgIHBhZGRpbmctbGVmdDogMzJweDsKICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7CiAgICBwYWRkaW5nLXRvcDogMTNweDsKfQoKLm9vb1Njcm9sbFJpZ2h0IHsKICAgIGNvbnRlbnQ6ICJcZTkwNCI7CiAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAzMnB4OwogICAgcGFkZGluZy10b3A6IDEzcHg7Cn0KCi5vb29CcmVhZGNydW1iU2VydmljZUxpc3QgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgcGFkZGluZzogMHB4OwogICAgZ2FwOiA4cHg7CiAgICBmbGV4OiBub25lOwogICAgb3JkZXI6IDA7CiAgICBmbGV4LWdyb3c6IDA7Cn0KCi5vb29CcmVhZGNydW1iU2VydmljZUxpc3QgPiBsaSB7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgcGFkZGluZzogOHB4IDI0cHg7CiAgICBnYXA6IDEzcHg7CiAgICB3aWR0aDogYXV0bzsKICAgIGhlaWdodDogNDBweDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMTI3LCAxMjgsIDE1NywgMC4wOCk7CiAgICBib3JkZXItcmFkaXVzOiA3NnB4OwogICAgZmxleDogbm9uZTsKICAgIG9yZGVyOiAxOwogICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIGZsZXgtZ3JvdzogMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIGxpbmUtaGVpZ2h0OiAxM3B4OwogICAgY29sb3I6IHZhcigtLWNvbFRleHRMaWdodCk7Cn0KCi5vb29CcmVhZGNydW1iU2VydmljZUxpc3QgPiBsaS5vb29TZXJ2aWNlSURTZWxlY3RlZCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xNYWluTGlnaHQpOwogICAgY29sb3I6IHZhcigtLWNvbE1haW5MaWdodCk7CiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwp9Cgoub29vU2VydmljZVJlc3VsdCB7CiAgICBjb2xvcjogdmFyKC0tY29sVGV4dExpZ2h0KTsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKfQoKLm9vb1NlcnZpY2VCcmVhZGNydW1iRmllbGQgLm9vb2ZvLm9vb2ZvLWFycm93X3I6OmJlZm9yZSB7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQoKLkRpYWxvZy5vb29TZXJ2aWNlQ2F0YWxvZ01vZGFsIHsKICAgIG1pbi1oZWlnaHQ6IDcwNHB4OwogICAgaGVpZ2h0OiA3MDRweDsKfQoKLkRpYWxvZy5vb29TZXJ2aWNlQ2F0YWxvZ01vZGFsOm5vdCg6bGFzdC1jaGlsZCkgPiAuSGVhZGVyLAouRGlhbG9nLm9vb1NlcnZpY2VDYXRhbG9nTW9kYWw6bm90KDpsYXN0LWNoaWxkKSA+IC5Db250ZW50IHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5EaWFsb2cub29vU2VydmljZUNhdGFsb2dNb2RhbDpub3QoOmxhc3QtY2hpbGQpIHsKICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7Cn0KCi5EaWFsb2cub29vU2VydmljZUNhdGFsb2dNb2RhbDpudGgtbGFzdC1jaGlsZCgyKSA+IC5IZWFkZXIsCi5EaWFsb2cub29vU2VydmljZUNhdGFsb2dNb2RhbDpudGgtbGFzdC1jaGlsZCgyKSA+IC5Db250ZW50IHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5EaWFsb2cub29vRGV0YWlsZWRWaWV3LCAub29vRGV0YWlsZWRWaWV3ID4gZGl2IHsKICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7Cn0KCi5EaWFsb2cub29vRGV0YWlsZWRWaWV3ID4gLkhlYWRlciB7CiAgICBwYWRkaW5nLXRvcDogMjRweDsKICAgIHdpZHRoOiA3MjBweDsKfQoKLm9vb0RldGFpbGVkVmlldyAub29vU2VydmljZUZpZWxkU2VhcmNoIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5vb29EZXRhaWxlZFZpZXcgLm9vb1NlcnZpY2VCcmVhZGNydW1iIHsKICAgIHdpZHRoOiAxMDAlOwogICAgLyogd2lkdGg6IGNhbGMoMTAwJSAtIDE4MHB4KTsgKi8KfQoKLkRpYWxvZy5vb29EZXRhaWxlZFZpZXcgPiAuQ29udGVudCB7CiAgICBwYWRkaW5nOiAwcHggMjVweDsKfQoKLm9vb1NlcnZpY2VXcmFwcGVyID4gLm9vb1N1YnNlcnZpY2VzICB7CiAgICBjb2xvcjogIzAwMWJmZjsKICAgIGNvbG9yOiB2YXIoLS1jb2xNYWluTGlnaHQpOwogICAgbWFyZ2luOiAwIDAgOHB4IDhweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLm9vb1NlcnZpY2VDb250YWluZXIgewogICAgZ2FwOiAxNnB4IDE2cHg7CiAgICBtYXJnaW46IDhweDsKICAgIGZsb2F0OiBsZWZ0OwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgcGFkZGluZzogMHB4OwogICAgaXNvbGF0aW9uOiBpc29sYXRlOwogICAgd2lkdGg6IDMxOXB4OwogICAgaGVpZ2h0OiAyODBweDsKICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7CiAgICBib3JkZXItcmFkaXVzOiAxNnB4Owp9Cgoub29vU2VydmljZUNvbnRhaW5lcjpob3ZlciwgLm9vb0RldGFpbGVkVGlja2V0VHlwZUxpc3QgPiBhOmhvdmVyIHsKICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1jb2xNYWluTGlnaHQpOwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY29sb3I6IHZhcigtLWNvbE1haW5MaWdodCk7Cn0KCi5vb29TZXJ2aWNlQ29udGFpbmVyOmhvdmVyIC5vb29TZXJ2aWNlTmFtZSB7CiAgICBjb2xvcjogdmFyKC0tY29sTWFpbkxpZ2h0KTsKfQoKLyogU3BlY2lhbCBzdHlsaW5nIHdpdGhpbiBzdWJzZXJ2aWNlIGxpc3QgaW4gZGV0YWlsZWQgdmlldyAqLwoub29vRGV0YWlsZWRTdWJzZXJ2aWNlcyA+IC5vb29TZXJ2aWNlQ29udGFpbmVyIC5vb29TZXJ2aWNlTmFtZSwgCi5vb29EZXRhaWxlZFN1YnNlcnZpY2VzID4gLm9vb1NlcnZpY2VDb250YWluZXIgLm9vb1N1YnNlcnZpY2VzLAoub29vRGV0YWlsZWRTdWJzZXJ2aWNlcyA+IC5vb29TZXJ2aWNlQ29udGFpbmVyIC5vb29TZXJ2aWNlSW5mb3JtYXRpb24gewogICAgZm9udC1zaXplOiAxMnB4Owp9Cgoub29vRGV0YWlsZWRTdWJzZXJ2aWNlcyA+IC5vb29TZXJ2aWNlQ29udGFpbmVyLAoub29vRGV0YWlsZWRTdWJzZXJ2aWNlcyA+IC5vb29TZXJ2aWNlQ29udGFpbmVyID4gLm9vb0Rlc2NpcHRpb25IZWFkZXIsCi5vb29EZXRhaWxlZFN1YnNlcnZpY2VzID4gLm9vb1NlcnZpY2VDb250YWluZXIgPiAub29vU2VydmljZUJvdHRvbSB7CiAgICB3aWR0aDogMzAwcHg7Cn0KCi5vb29EZXRhaWxlZFN1YnNlcnZpY2VzID4gLm9vb1NlcnZpY2VDb250YWluZXIgewogICAgaGVpZ2h0OiAxNjBweDsKICAgIGdhcDogMDsKfQoKLm9vb0RldGFpbGVkU3Vic2VydmljZXMgPiAub29vU2VydmljZUNvbnRhaW5lciA+IC5vb29EZXNjaXB0aW9uSGVhZGVyIHsKICAgIGhlaWdodDogMDsKfQoKLm9vb0RldGFpbGVkU3Vic2VydmljZXMgPiAub29vU2VydmljZUNvbnRhaW5lciA+IC5vb29EZXNjcmlwdGlvbkJvZHkgPiAub29vRGVzY3JpcHRpb25TaG9ydCB7CiAgICBkaXNwbGF5OiBub25lOwp9Cgoub29vU2VydmljZUNvbnRhaW5lciA+IC5vb29EZXNjcmlwdGlvbkJvZHkgPiAub29vS2V5d29yZHMgewogICAgZGlzcGxheTogbm9uZTsKfQoKLm9vb0RldGFpbGVkU3Vic2VydmljZXMgPiAub29vU2VydmljZUNvbnRhaW5lciAub29vU2VydmljZUluZm9ybWF0aW9uIHsKICAgIHdpZHRoOiAyMzNweDsKICAgIGZsZXgtZ3JvdzogMDsKfQoKLm9vb0RldGFpbGVkU3Vic2VydmljZXMgPiAub29vU2VydmljZUNvbnRhaW5lciAub29vU2VydmljZUFjdGlvbkVudHJ5IHsKICAgIG1heC13aWR0aDogMjU1cHg7Cn0KCi5vb29EZXRhaWxlZFN1YnNlcnZpY2VzID4gLm9vb1NlcnZpY2VDb250YWluZXIgLm9vb1NlcnZpY2VBY3Rpb25zIHsKICAgIG1heC1oZWlnaHQ6IDExOHB4Owp9Cgoub29vRGVzY2lwdGlvbkhlYWRlciB7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHBhZGRpbmc6IDI0cHg7CiAgICBpc29sYXRpb246IGlzb2xhdGU7CiAgICB3aWR0aDogMzE5cHg7CiAgICBoZWlnaHQ6IDcycHg7CiAgICBib3JkZXI6IDBweCBzb2xpZCByZ2JhKDEyNywgMTI4LCAxNTcsIDAuMTYpOwogICAgZmxleDogbm9uZTsKICAgIG9yZGVyOiAwOwogICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIGZsZXgtZ3JvdzogMDsKICAgIHotaW5kZXg6IDI7Cn0KCi5vb29EZXNjaXB0aW9uSGVhZGVyIGkgewogICAgcGFkZGluZzogNXB4Owp9Cgoub29vU2VydmljZU5hbWUgewogICAgZm9udC1zaXplOiAxNnB4OwogICAgZmxleC1ncm93OiAxOwp9Cgoub29vU2VydmljZUFjdGlvbnMgewogICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogMTUlOwogICAgdG9wOiAyMCU7CiAgICBwYWRkaW5nOiAxNnB4IDBweDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICBiYWNrZ3JvdW5kOiAjRkZGRkZGOwogICAgYm94LXNoYWRvdzogMHB4IDZweCAxMnB4IHJnYigwIDAgMCAvIDE2JSk7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgY3Vyc29yOiBpbml0aWFsOwogICAgbWF4LWhlaWdodDogMjM0cHg7CiAgICBvdmVyZmxvdy15OiBhdXRvOwp9Cgoub29vU2VydmljZUFjdGlvbkVudHJ5IHsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBwYWRkaW5nOiAxNHB4IDI0cHggMTFweDsKICAgIGdhcDogMTZweDsKICAgIHdpZHRoOiBhdXRvOwogICAgbWF4LXdpZHRoOiAyNzBweDsKICAgIGhlaWdodDogNDFweDsKICAgIGZsZXg6IG5vbmU7CiAgICBvcmRlcjogMTsKICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICBmbGV4LWdyb3c6IDA7Cn0KCi5vb29TZXJ2aWNlQWN0aW9uRW50cnk6aG92ZXIgewogICAgYmFja2dyb3VuZDogdmFyKC0tY29sQkdMaWdodCk7CiAgICBjb2xvcjogdmFyKC0tY29sTWFpbkxpZ2h0KTsKICAgIGN1cnNvcjogcG9pbnRlcjsKfSAKCi8qIEFwcGx5IGJvcmRlci1ib3R0b20gdG8gdGhlIGxhc3QgZWxlbWVudCB3aXRoIHRoZSBjbGFzcyAub29vU2VydmljZUFjdGlvbkNyZWF0ZSBpbiB0aGUgbGlzdCAqLwoub29vU2VydmljZUFjdGlvblN1YnNlcnZpY2VzIHsKICAgIGJvcmRlci10b3A6IDAuNnB4IHNvbGlkICNFNUU1RUI7Cn0KCi5vb29EZXNjcmlwdGlvbkJvZHkgeyAKICAgIG92ZXJmbG93OiBoaWRkZW47ICovCiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICBwYWRkaW5nOiAxNnB4IDI0cHg7CiAgICBnYXA6IDRweDsKICAgIGZsZXg6IG5vbmU7CiAgICBvcmRlcjogMTsKICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICBmbGV4LWdyb3c6IDE7CiAgICB6LWluZGV4OiAxOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgY29sb3I6IHZhcigtLWNvbFRleHRMaWdodCk7Cn0KCi5vb29TZXJ2aWNlQm90dG9tIHsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKICAgIHBhZGRpbmc6IDE2cHggMjRweDsKICAgIGhlaWdodDogNDhweDsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDEyNywgMTI4LCAxNTcsIDAuMTYpOwogICAgZmxleDogbm9uZTsKICAgIG9yZGVyOiAyOwogICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIGZsZXgtZ3JvdzogMDsKICAgIHotaW5kZXg6IDA7CiAgICBjb2xvcjogdmFyKC0tY29sVGV4dExpZ2h0KTsKfQoKLm9vb1NlcnZpY2VJbmZvcm1hdGlvbiB7IAogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgcGFkZGluZzogMHB4OwogICAgZ2FwOiA4cHg7CiAgICB3aWR0aDogMjU3cHg7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBmbGV4OiBub25lOwogICAgb3JkZXI6IDA7CiAgICBmbGV4LWdyb3c6IDE7Cn0KCi5vb29TZXJ2aWNlQm90dG9tOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbE1haW5MaWdodCk7CiAgICBib3JkZXItcmFkaXVzOiAwIDAgMTBweCAxMHB4OwogICAgY29sb3I6ICNmZmZmZmY7Cn0KCi5vb29DcmVhdGUgeyAKICAgIGdyaWQtYXJlYTogMyAvIDIgLyA1IC8gMzsKfQoKLm9vb0NyZWF0ZSB7CiAgICBjb2xvcjogIzAwMWJmZjsKICAgIGNvbG9yOiB2YXIoLS1jb2xNYWluTGlnaHQpOwogICAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICAgIGZvbnQtc2l6ZTogMjRweDsKICAgIGJveC1zaGFkb3c6IDAgMXB4IDRweCAwIHJnYmEoNCwgMCwgNzEsIDAuMTYpOwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgdmFyKC0tY29sU2hhZG93RGFyayk7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7Cn0KCi5vb29DcmVhdGUgPiBpLCAub29vU2VydmljZUluZm9ybWF0aW9uID4gaSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAyNHB4OwogICAgaGVpZ2h0OiAyNHB4OwogICAgcGFkZGluZzogOHB4Owp9Cgoub29vU3Vic2VydmljZXMgeyAKICAgIHRleHQtZGVjb3JhdGlvbi1saW5lOiB1bmRlcmxpbmU7CiAgICBjb2xvcjogdmFyKC0tY29sVGV4dExpZ2h0KTsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGxpbmUtaGVpZ2h0OiAxNTAlOwp9Cgoub29vU3Vic2VydmljZXM6aG92ZXIgewogICAgY29sb3I6IHZhcigtLWNvbE1haW5MaWdodCk7Cn0KCi5vb29EZXRhaWxlZExlZnQgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDc1MHB4OwogICAgaGVpZ2h0OiA1OTlweDsKICAgIGxlZnQ6IDQ0cHg7CiAgICB0b3A6IDEwMHB4OwogICAgb3ZlcmZsb3cteTogaGlkZGVuOwogICAgb3ZlcmZsb3cteDogaGlkZGVuOwp9Cgoub29vRGV0YWlsZWRSaWdodCB7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kOwogICAgcGFkZGluZzogMHB4OwogICAgZ2FwOiAxNnB4OwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDM5NnB4OwogICAgaGVpZ2h0OiA3MDRweDsKICAgIHJpZ2h0OiAwcHg7CiAgICBib3R0b206IDBweDsKfQoKLm9vb0RldGFpbGVkU2VydmljZU5hbWUgewogICAgbGVmdDogN3B4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbWFyZ2luOiAxMHB4IDA7Cn0KCi5vb29EZXRhaWxlZFNlcnZpY2VOYW1lID4gcCB7CiAgICBsaW5lLWhlaWdodDogMS4zOwp9Cgoub29vRGV0YWlsZWRTZXJ2aWNlTmFtZSA+IGgyIHsKICAgIGZvbnQtc2l6ZTogMjRweDsKfQoKLm9vb0RldGFpbGVkRGVzY3JpcHRpb25Mb25nID4gKiB7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC1oZWlnaHQ6IDQ1MHB4OwogICAgbWluLWhlaWdodDogMzAwcHg7Cn0KCi5vb29EZXRhaWxlZFN1YnRpdGxlIHsKICAgIHBhZGRpbmctYm90dG9tOiA4cHg7Cn0KCi5vb29TTEFMYWJlbCArICogewogICAgcGFkZGluZy10b3A6IDhweDsKfQoKLm9vb0RldGFpbGVkQWRkaXRpb25hbEluZm9ybWF0aW9uID4gZGl2Omxhc3QtY2hpbGQgewogICAgbWFyZ2luLXRvcDogMTVweDsKfQoKLm9vb0RldGFpbGVkVGlja2V0VHlwZUxpc3QgewogICAgd2lkdGg6IDM2NHB4OwogICAgaGVpZ2h0OiAxMDBweDsKICAgIGZsZXg6IG5vbmU7CiAgICBvcmRlcjogMDsKICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICBmbGV4LWdyb3c6IDE7CiAgICB6LWluZGV4OiAxOwp9Cgoub29vRGV0YWlsZWRUaWNrZXRUeXBlTGlzdCA+IGEgewogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIG1hcmdpbjogM3B4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIHBhZGRpbmc6IDE2cHggMzJweDsKICAgIGdhcDogOHB4OwogICAgd2lkdGg6IDExMC42N3B4OwogICAgaGVpZ2h0OiAxMDBweDsKICAgIHRvcDogMHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjcsIDEyOCwgMTU3LCAwLjE2KTsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7Cn0KCi5vb29EZXRhaWxlZFRpY2tldFR5cGVMaXN0ID4gYTpob3ZlciA+IGkgewogICAgY29sb3I6IHZhcigtLWNvbE1haW5MaWdodCk7Cn0KCi5vb29EZXRhaWxlZFRpY2tldFR5cGVMaXN0ID4gYSA+IHNwYW4gewogICAgZm9udC1zaXplOiAxMnB4OwogICAgbGluZS1oZWlnaHQ6IDE1cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5vb29EZXRhaWxlZFRpY2tldFR5cGVMaXN0ID4gYSA+IGkgewogICAgY29sb3I6IHZhcigtLWNvbE1haW5MaWdodCk7Cn0KCi5vb29EZXRhaWxlZEFjY29yZGlvbkxpc3QgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgIHBhZGRpbmc6IDE2cHg7CiAgICB3aWR0aDogMzIzcHg7CiAgICBoZWlnaHQ6IDUyNHB4OwogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xCR0xpZ2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICBmbGV4OiBub25lOwogICAgb3JkZXI6IDE7CiAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwogICAgZmxleC1ncm93OiAwOwogICAgei1pbmRleDogMDsKfQoKLm9vb0RldGFpbGVkQWNjb3JkaW9uIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICBwYWRkaW5nOiAyNHB4IDE2cHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzdGODA5RDA4OwogICAgZmxleDogbm9uZTsKICAgIG9yZGVyOiAxOwogICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgIGZsZXgtZ3JvdzogMDsKICAgIG1hcmdpbjogLTFweCAwcHg7Cn0KCi5vb29EZXRhaWxlZEFjY29yZGlvbiAub29vRGV0YWlsZWRGQVEsIC5vb29EZXRhaWxlZEFjY29yZGlvbiAub29vRGV0YWlsZWRTdWJzZXJ2aWNlcyB7CiAgICBtYXJnaW4tbGVmdDogLTIwcHg7Cn0KCi5vb29EZXRhaWxlZEFjY29yZGlvbiA+IC5IZWFkZXIgPiAuV2lkZ2V0QWN0aW9uID4gYSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0gCgoub29vRGV0YWlsZWRBY2NvcmRpb24gaS5vb29mby1hcnJvd19kLCAub29vRGV0YWlsZWRBY2NvcmRpb24gaS5vb29mby1hcnJvd191IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiA5MHB4OwogICAgdG9wOiAyMnB4OwogICAgbGVmdDogMjgwcHg7CiAgICBtYXJnaW4tdG9wOiAtMTlweDsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7IC8qIGZpeCB0aGlzLCBzaG91bGQndCBiZSBuZWVkZWQgKi8KfQoKLm9vb0RldGFpbGVkQWNjb3JkaW9uIGkub29vZm8tYXJyb3dfZCB7CiAgICBjb2xvcjogdmFyKC0tY29sTWFpbkxpZ2h0KTsKfQoKLm9vb0RldGFpbGVkQWNjb3JkaW9uIGgzIHsKICAgIGxpbmUtaGVpZ2h0OiAyMHB4Owp9Cgoub29vRGV0YWlsZWRBY2NvcmRpb24uQ29sbGFwc2VkIGkub29vZm8tYXJyb3dfZCB7CiAgICBkaXNwbGF5OiBub25lOwp9Cgoub29vRGV0YWlsZWRBY2NvcmRpb24uRXhwYW5kZWQgaS5vb29mby1hcnJvd191IHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5vb29EZXRhaWxlZEFjY29yZGlvbi5FeHBhbmRlZCBoMywgLm9vb0RldGFpbGVkQWNjb3JkaW9uIC5XaWRnZXRBY3Rpb24gPiBhOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1jb2xNYWluTGlnaHQpOwp9Cgoub29vRGV0YWlsZWRBY2NvcmRpb24gLldpZGdldEFjdGlvbiA+IGE6aG92ZXIgPiAub29vTnVtYmVyT2ZFbnRyaWVzIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbE1haW5MaWdodCk7Cn0KCi5vb29EZXRhaWxlZEFjY29yZGlvbkNhcHRpb24gewogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGRpc3BsYXk6IGZsZXg7Cn0KCi5vb29EZXRhaWxlZEFjY29yZGlvbiA+IC5Db250ZW50IHsKICAgIHBhZGRpbmc6IDI1cHggMHB4IDBweDsKfQoKLm9vb0RldGFpbGVkQWNjb3JkaW9uIC5vb29OdW1iZXJPZkVudHJpZXMgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBwYWRkaW5nOiAwcHg7CiAgICBnYXA6IDhweDsKICAgIHdpZHRoOiAxNnB4OwogICAgaGVpZ2h0OiAxNnB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tY29sVGV4dERhcmspOwogICAgYm9yZGVyLXJhZGl1czogNDBweDsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBtYXJnaW4tdG9wOiAycHg7Cn0KCi5vb29EZXRhaWxlZEFjY29yZGlvbi5FeHBhbmRlZCAub29vTnVtYmVyT2ZFbnRyaWVzIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbE1haW5MaWdodCk7Cn0KCi5vb29EZXRhaWxlZEFjY29yZGlvbiAub29vTnVtYmVyT2ZFbnRyaWVzID4gc3BhbiB7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgZm9udC1zaXplOiA5cHg7CiAgICBsaW5lLWhlaWdodDogMTFweDsKICAgIGNvbG9yOiAjZmZmZmZmOwp9Cgoub29vRGV0YWlsZWRGQVEgPiBhOmhvdmVyIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLm9vb0RldGFpbGVkRkFRSXRlbSB7CiAgICB3aWR0aDogMjg4cHg7CiAgICBsaW5lLWhlaWdodDogMTUwJTsKICAgIHBhZGRpbmc6IDEzcHggMHB4IDIwcHggMjBweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLm9vb0RldGFpbGVkRkFRSXRlbTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNywgMTI4LCAxNTcsIDAuMDQpOwogICAgYm9yZGVyOiAwcHggc29saWQgcmdiYSgxMjcsIDEyOCwgMTU3LCAwLjE2KTsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7Cn0KCi5vb29EZXRhaWxlZEZBUSA+IGE6aG92ZXIgPiAub29vRGV0YWlsZWRGQVFJdGVtID4gLm9vb0ZBUURldGFpbHNIaW50IHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogMjdweDsKICAgIHRvcDogY2FsYyg1MCUgLSAyN3B4LzIgKyAwLjVweCk7CiAgICBjb2xvcjogdmFyKC0tY29sTWFpbkxpZ2h0KTsKICAgIGZvbnQtc2l6ZTogMTBweDsKfQoKLm9vb0RldGFpbGVkRkFRID4gYTpob3ZlciA+IC5vb29EZXRhaWxlZEZBUUl0ZW0gPiAub29vRkFRRGVzY3JpcHRpb24gewogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB2YXIoLS1jb2xUZXh0RGFyaykgMCUsIHRyYW5zcGFyZW50KTsKICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0OwogICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50Owp9Cgoub29vRkFRRGVzY3JpcHRpb24gewogICAgZm9udC1zaXplOiAxMnB4Owp9CgovKiBUT0RPOiBDb3VsZC9TaG91bGQgYmUgdHJhbnNmZXJlZCB0byBvdGhlciBDU1MgY2xhc3NlcyAqLwovKiBNb2RhbCAqLwojT3ZlcmxheSB7CiAgICB0b3A6IDBweDsKfQoKLm9vb0hpZGRlbiB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5vb29Db2xvci1SZWQgewogICAgY29sb3I6IHJlZDsKfQoKLm9vb0NvbG9yLUdyZWVuIHsKICAgIGNvbG9yOiBncmVlbjsKfQoKLm9vb0NvbG9yLUJsdWUgewogICAgY29sb3I6IGJsdWU7Cn0KCi5vb29Db2xvci1ZZWxsb3cgewogICAgY29sb3I6IHllbGxvdzsKfQoKLm9vb2ZvLWJhbmc6OmJlZm9yZSB7CiAgICBjb250ZW50OiAnISc7CiAgICBmb250LXdlaWdodDogYm9sZDsKfSAKCi5EaWFsb2cgewogICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDUwcHgpOwogICAgb3ZlcmZsb3cteTogYXV0bzsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbEJHTGlnaHQpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdMaWdodCk7CiAgICB3aWR0aDogOTUlOwogICAgbWF4LXdpZHRoOiAxMjEycHg7Cn0KCi5EaWFsb2cub29vU2VydmljZUNhdGFsb2dNb2RhbCA+IC5Db250ZW50IHsKICAgIHBhZGRpbmc6IDIwcHggNDhweCAxNnB4IDEwMHB4Owp9CgouRGlhbG9nID4gLkhlYWRlciB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogICAgcGFkZGluZzogMTZweCAwcHggMHB4IDEwMHB4Owp9CgouRGlhbG9nID4gLkhlYWRlciAuQ2xvc2UgewogICAgbGVmdDogNTZweDsKICAgIHRvcDogNDZweDsKfQoKLkRpYWxvZyA+IC5IZWFkZXIgLm9vb2ZvIHsKICAgIHRvcDogNXB4OwogICAgZm9udC1zaXplOiAxNnB4Owp9CgouRGlhbG9nOm5vdCgub29vRGV0YWlsZWRWaWV3KSA+IC5IZWFkZXIgLm9vb2ZvIHsKICAgIHRvcDogNDBweDsKfQoKLkRpYWxvZyA+IC5IZWFkZXIgI1NlcnZpY2VJRF9TZWFyY2ggewogICAgd2lkdGg6IDIyMHB4ICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1yYWRpdXM6IDMwcHggMnB4IDJweCAzMHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sVGV4dExpZ2h0KTsKICAgIGJveC1zaGFkb3c6IDBweCAyOXB4IDQ5cHggOHB4IHJnYigwIDAgMCAvIDQlKTsKfQoKLkRpYWxvZyA+IC5IZWFkZXIgI1NlcnZpY2VJRF9TZWFyY2g6aG92ZXIsIC5EaWFsb2cgPiAuSGVhZGVyIC5JbnB1dEZpZWxkX1NlbGVjdGlvbjpob3ZlciB7CiAgICBjdXJzb3I6IGRlZmF1bHQ7Cn0KCi5EaWFsb2cgPiAuSGVhZGVyIC5vb29TZXJ2aWNlRmllbGRTZWFyY2ggPiBpbnB1dCB7CiAgICBib3JkZXItcmFkaXVzOiAzMHB4OwogICAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICAgIGhlaWdodDogNjBweDsKICAgIHBhZGRpbmctbGVmdDogNDBweDsKfQoKLkRpYWxvZyA+IC5IZWFkZXIgI1NlcnZpY2VJRF9TZWFyY2g6YmVmb3JlIHsKICAgIGZvbnQtZmFtaWx5OiBGb250QXdlc29tZTsKICAgIGNvbnRlbnQ6ICJcZjAwMiI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDNweDsKICAgIHJpZ2h0OiA1cHg7CiAgICB3aWR0aDogMTVweDsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgei1pbmRleDogNTsKICAgIGNvbG9yOiAjMjc0MTRmOwp9CgouRGlhbG9nID4gLkhlYWRlciAjU2VydmljZUlEX1NlYXJjaCArIC5JbnB1dEZpZWxkX1NlbGVjdGlvbiB7CiAgICBwYWRkaW5nOiAwOwogICAgd2lkdGg6IDE1MHB4OwogICAgbGVmdDogMjVweCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cn0KCi5EaWFsb2cgPiAuSGVhZGVyICNTZXJ2aWNlSURfU2VhcmNoICsgLklucHV0RmllbGRfU2VsZWN0aW9uOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGU5MDIiOwogICAgZm9udC1mYW1pbHk6ICdvdG9ibyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDdweDsKICAgIHJpZ2h0OiAtNTBweDsKICAgIGNvbG9yOiB2YXIoLS1jb2xUZXh0TGlnaHQpOwp9CgouRGlhbG9nID4gLkhlYWRlciAjU2VydmljZUlEX1NlYXJjaCA+IGRpdiB7CiAgICBjb250ZW50OiAiXGU5MDIiOwogICAgZm9udC1mYW1pbHk6ICdvdG9ibyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogLTUwcHg7Cn0KCi5EaWFsb2cgPiAuSGVhZGVyIC5JbnB1dEZpZWxkX1NlbGVjdGlvbiAuUmVtb3ZlIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5EaWFsb2cgPiAuSGVhZGVyIC5JbnB1dEZpZWxkX1NlbGVjdGlvbiAuVGV4dCB7CiAgICB3aWR0aDogMjMwcHg7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgaGVpZ2h0OiA0NXB4Owp9CgouRGlhbG9nID4gLkhlYWRlciAuSW5wdXRGaWVsZF9Db250YWluZXIgPiAuSW5wdXRGaWVsZF9JbnB1dENvbnRhaW5lciA+IC5Gb2N1c0ZpZWxkLCAuRGlhbG9nID4gLkhlYWRlciAuSW5wdXRGaWVsZF9Db250YWluZXIgPiAuSW5wdXRGaWVsZF9JbnB1dENvbnRhaW5lciBpLmZhLXRpbWVzLWNpcmNsZSB7CiAgICBkaXNwbGF5OiBub25lOwp9CgouRGlhbG9nICsgLklucHV0RmllbGRfTGlzdENvbnRhaW5lciB7CiAgICB6LWluZGV4OiA5OTk5OTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLXRvcDogMTFweDsKfQoKLkRpYWxvZyArIC5JbnB1dEZpZWxkX0xpc3RDb250YWluZXIgLklucHV0RmllbGRfVHJlZUNvbnRhaW5lciB7CiAgICBtYXJnaW46IDA7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4Owp9CgouRGlhbG9nICsgLklucHV0RmllbGRfTGlzdENvbnRhaW5lciAuSW5wdXRGaWVsZF9UcmVlQ29udGFpbmVyIC5qc3RyZWUtbm9kZTpub3QoOmxhc3QtY2hpbGQpIHsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jb2xCR0xpZ2h0KTsKfQoKLkRpYWxvZyArIC5JbnB1dEZpZWxkX0xpc3RDb250YWluZXIgLklucHV0RmllbGRfVHJlZUNvbnRhaW5lciBhLmpzdHJlZS1hbmNob3IgewogICAgY29sb3I6IHZhcigtLWNvbFRleHRMaWdodCk7Cn0KCi5EaWFsb2cgKyAuSW5wdXRGaWVsZF9MaXN0Q29udGFpbmVyIC5JbnB1dEZpZWxkX1RyZWVDb250YWluZXIgLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtd2hvbGVyb3ctdWwgLmpzdHJlZS13aG9sZXJvdy1jbGlja2VkIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbEJHTGlnaHQpOwp9CgouRGlhbG9nICsgLklucHV0RmllbGRfTGlzdENvbnRhaW5lciA+IC5vb29DbG9zZSB7CiAgICBkaXNwbGF5OiBub25lOwp9Cgoub29vU2VydmljZUZpZWxkLCAub29vU2VydmljZUZpZWxkU2VhcmNoIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IGF1dG87CiAgICBoZWlnaHQ6IDU4cHg7CiAgICBsZWZ0OiAwcHg7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4Owp9Cgoub29vU2VydmljZUZpZWxkU2VhcmNoID4gaW5wdXQgewogICAgd2lkdGg6IDkwJTsKfQoKLm9vb1NlcnZpY2VGaWVsZFNlYXJjaDphZnRlciB7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7CiAgICBjb250ZW50OiAiXGYwMDIiOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgcmlnaHQ6IDUwcHg7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBjb2xvcjogdmFyKC0tY29sVGV4dExpZ2h0KTsKICAgIGN1cnNvcjogdGV4dDsKfQoKI29vb0RldGFpbGVkVG9nZ2xlU2lkZWJhciB7CiAgICBkaXNwbGF5OiBub25lOwp9CgovKiBUT0RPOiBUaGlzIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgb3RvYm8uc3ZnICovCi5vb29mby1sb3VwZTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGhlaWdodD0nNDgnIHdpZHRoPSc0OCclM0UlM0NwYXRoIGQ9J00yNCAzNC4xcS42NSAwIDEuMDc1LS40MjUuNDI1LS40MjUuNDI1LTEuMDc1di02LjloNi45cS42NSAwIDEuMDc1LS40MjUuNDI1LS40MjUuNDI1LTEuMDc1IDAtLjY1LS40MjUtMS4wNzUtLjQyNS0uNDI1LTEuMDc1LS40MjVoLTYuOXYtNi45cTAtLjY1LS40MjUtMS4wNzVRMjQuNjUgMTQuMyAyNCAxNC4zcS0uNjUgMC0xLjA3NS40MjUtLjQyNS40MjUtLjQyNSAxLjA3NXY2LjloLTYuOXEtLjY1IDAtMS4wNzUuNDI1LS40MjUuNDI1LS40MjUgMS4wNzUgMCAuNjUuNDI1IDEuMDc1LjQyNS40MjUgMS4wNzUuNDI1aDYuOXY2LjlxMCAuNjUuNDI1IDEuMDc1LjQyNS40MjUgMS4wNzUuNDI1Wm0wIDkuOXEtNC4xNSAwLTcuOC0xLjU3NS0zLjY1LTEuNTc1LTYuMzUtNC4yNzUtMi43LTIuNy00LjI3NS02LjM1UTQgMjguMTUgNCAyNHQxLjU3NS03LjhRNy4xNSAxMi41NSA5Ljg1IDkuODVxMi43LTIuNyA2LjM1LTQuMjc1UTE5Ljg1IDQgMjQgNHQ3LjggMS41NzVxMy42NSAxLjU3NSA2LjM1IDQuMjc1IDIuNyAyLjcgNC4yNzUgNi4zNVE0NCAxOS44NSA0NCAyNHYxNS45cTAgMS43LTEuMiAyLjlUMzkuOSA0NFptMC0zcTcuMSAwIDEyLjA1LTQuOTVRNDEgMzEuMSA0MSAyNHEwLTcuMS00Ljk1LTEyLjA1UTMxLjEgNyAyNCA3cS03LjEgMC0xMi4wNSA0Ljk1UTcgMTYuOSA3IDI0cTAgNy4xIDQuOTUgMTIuMDVRMTYuOSA0MSAyNCA0MVptMC0xNi44WicvJTNFJTNDL3N2ZyUzRSIpOwogICAgem9vbTogMC4zOwp9Cgoub29vZm8tc3Vic2NyaXB0aW9uOjpiZWZvcmUgewogICAgY29udGVudDogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgaGVpZ2h0PSc0OCcgd2lkdGg9JzQ4JyUzRSUzQ3BhdGggZD0nTTE1LjUgN3EtLjY1IDAtMS4wNzUtLjQyNVExNCA2LjE1IDE0IDUuNXEwLS42NS40MjUtMS4wNzVRMTQuODUgNCAxNS41IDRoMTdxLjY1IDAgMS4wNzUuNDI1UTM0IDQuODUgMzQgNS41cTAgLjY1LS40MjUgMS4wNzVRMzMuMTUgNyAzMi41IDdabS02LjU1IDZxLS42NSAwLTEuMDc1LS40MjUtLjQyNS0uNDI1LS40MjUtMS4wNzUgMC0uNjUuNDI1LTEuMDc1UTguMyAxMCA4Ljk1IDEwaDMwLjFxLjY1IDAgMS4wNzUuNDI1LjQyNS40MjUuNDI1IDEuMDc1IDAgLjY1LS40MjUgMS4wNzVRMzkuNyAxMyAzOS4wNSAxM1pNNyA0NHEtMS4yIDAtMi4xLS45UTQgNDIuMiA0IDQxVjE5cTAtMS4yLjktMi4xLjktLjkgMi4xLS45aDM0cTEuMiAwIDIuMS45LjkuOS45IDIuMXYyMnEwIDEuMi0uOSAyLjEtLjkuOS0yLjEuOVptMC0zaDM0VjE5SDd2MjJabTE1LjctNS4xNSA2Ljg1LTQuNnEuNy0uNDUuNy0xLjI1dC0uNy0xLjI1bC02Ljg1LTQuNnEtLjc1LS41NS0xLjU1LS4xLS44LjQ1LS44IDEuMzV2OS4yNXEwIC45LjggMS4zdDEuNTUtLjFaTTcgMTl2MjItMjJaJy8lM0UlM0Mvc3ZnJTNFIik7CiAgICB6b29tOiAwLjM7Cn0KCi5vb29UaWxlX1NlcnZpY2VDYXRhbG9nIHsKICAgIHBhZGRpbmc6IDI0cHggMzJweDsKfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA4ODBweCkgYW5kIChtYXgtd2lkdGg6IDEyNzlweCkgewoKICAgIC5vb29TZXJ2aWNlQnJlYWRjcnVtYiB7CiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDIwMHB4KTsKICAgIH0KCiAgICAub29vU2Nyb2xsTGVmdCB7CiAgICAgICAgbGVmdDogMTE0cHg7CiAgICB9IAoKICAgIC5vb29QYXJlbnRTZXJ2aWNlTGlzdCB7CiAgICAgICAgbWF4LXdpZHRoOiA4NjRweDsKICAgIH0KfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDg3OXB4KSB7CiAgICAKICAgIC5vb29QYXJlbnRTZXJ2aWNlTGlzdCB7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICBwYWRkaW5nOiAwcHg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgLyogd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiA0MjBweDsgKi8KICAgICAgICBoZWlnaHQ6IDEyOHB4OwogICAgICAgIG92ZXJmbG93LXg6IHNjcm9sbDsKICAgICAgICBmbGV4OiBub25lOwogICAgICAgIG9yZGVyOiAxOwogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgICB6LWluZGV4OiAwOwogICAgfQoKICAgIC5vb29QYXJlbnRTZXJ2aWNlTGlzdCA+IGxpIHsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIHdpZHRoOiAyNzQuNzVweDsKICAgICAgICBmbGV4OiBub25lOwogICAgICAgIG9yZGVyOiAwOwogICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgfQoKICAgIC5vb29TZXJ2aWNlQnJlYWRjcnVtYkZpZWxkIHsKICAgICAgICB3aWR0aDogNTMwcHg7CiAgICB9CgogICAgLm9vb1Njcm9sbExlZnQgewogICAgICAgIGxlZnQ6IDExNHB4OwogICAgfSAKfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMjc5cHgpIHsKICAgIC5EaWFsb2c6bm90KC5vb29EZXRhaWxlZFZpZXcpID4gLkhlYWRlciAub29vZm8gewogICAgICAgIHRvcDogNXB4OwogICAgfQoKICAgIC5vb29TZXJ2aWNlQnJlYWRjcnVtYldyYXAgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbEJHTGlnaHQpOwogICAgfQoKICAgIC5vb29EZXRhaWxlZFZpZXcgLm9vb1NlcnZpY2VCcmVhZGNydW1iV3JhcCB7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICB9CgogICAgLm9vb1BhcmVudFNlcnZpY2VMaXN0IHsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgIHBhZGRpbmc6IDBweDsKICAgICAgICBnYXA6IDhweDsKICAgICAgICAvKiB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDQyMHB4OyAqLwogICAgICAgIGhlaWdodDogMTI4cHg7CiAgICAgICAgb3ZlcmZsb3cteDogc2Nyb2xsOwogICAgICAgIGZsZXg6IG5vbmU7CiAgICAgICAgb3JkZXI6IDE7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIHotaW5kZXg6IDA7CiAgICB9CgogICAgLm9vb0JyZWFkY3J1bWJTZXJ2aWNlTGlzdCB7CiAgICAgICAgbWF4LXdpZHRoOiAzMjBweDsKICAgIH0KCiAgICAub29vUGFyZW50U2VydmljZUxpc3QgPiBsaSB7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICB3aWR0aDogMjc0Ljc1cHg7CiAgICAgICAgZmxleDogbm9uZTsKICAgICAgICBvcmRlcjogMDsKICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgIH0KCiAgICAub29vU2VydmljZUJyZWFkY3J1bWIgewogICAgICAgIGxlZnQ6IDIwcHg7CiAgICAgICAgd2lkdGg6IDEwMCUKICAgICAgICAvKiBtYXgtd2lkdGg6IDMyMHB4OyAqLwogICAgfQoKICAgIC5vb29TZXJ2aWNlUmVzdWx0IHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIC5vb29TZXJ2aWNlQ29udGFpbmVyOmhvdmVyLCAub29vRGV0YWlsZWRUaWNrZXRUeXBlTGlzdCA+IGE6aG92ZXIgewogICAgICAgIC8qIHdpZHRoOiAxMDAlOyAqLwogICAgICAgIGxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgICB0b3A6IDUwcHggIWltcG9ydGFudDsKICAgIH0KCiAgICAub29vRGV0YWlsZWREZXNjcmlwdGlvbkxvbmcgPiAqIHsKICAgICAgICB3aWR0aDogODB2dzsKICAgIH0KCiAgICAuRGlhbG9nIHsKICAgICAgICBsZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgdG9wOiA1MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgYm90dG9tOiAwOwogICAgfQoKICAgIC5EaWFsb2cub29vU2VydmljZUNhdGFsb2dNb2RhbCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgfQoKICAgIC5EaWFsb2cub29vU2VydmljZUNhdGFsb2dNb2RhbCA+IC5Db250ZW50IHsKICAgICAgICBwYWRkaW5nOiAyMHB4IDQ4cHggMTZweCA1MHB4OwogICAgfQoKICAgIC5EaWFsb2cgPiAuSGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIH0KCiAgICAuRGlhbG9nID4gLkhlYWRlciAuQ2xvc2UgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMzBweDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHRvcDogMDsKICAgIH0KCiAgICAuRGlhbG9nID4gLkhlYWRlciAub29vZm8gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB3aWR0aDogNHB4OwogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICBiYWNrZ3JvdW5kOiAjRTVFNUVCOwogICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgIH0KCiAgICAuRGlhbG9nID4gLkhlYWRlciAuQ2xvc2UgLm9vb2ZvLWNsb3NlOmJlZm9yZSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAuRGlhbG9nID4gLkhlYWRlciAub29vU2VydmljZUZpZWxkU2VhcmNoID4gaW5wdXQgewogICAgICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgxMjcsIDEyOCwgMTU3LCAwLjE2KTsKICAgIH0KCiAgICAub29vU2VydmljZUZpZWxkU2VhcmNoOmFmdGVyIHsKICAgICAgICByaWdodDogMTAwcHg7CiAgICB9CgogICAgLm9vb1NlcnZpY2VGaWVsZFNlYXJjaCB7CiAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICBoZWlnaHQ6IDg4cHg7CiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICAgIH0KCiAgICAuRGlhbG9nLm9vb0RldGFpbGVkVmlldyA+IC5IZWFkZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgfQoKICAgIC5vb29UaWxlX1NlcnZpY2VDYXRhbG9nID4gaDIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICB9CgogICAgLm9vb0RldGFpbGVkUmlnaHQgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgcG9zaXRpb246IGluaXRpYWw7CiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDI1cHgpOwogICAgfQoKICAgICNvb29EZXRhaWxlZFRvZ2dsZVNpZGViYXIgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQoKICAgICNvb29EZXRhaWxlZFRvZ2dsZVNpZGViYXIgPiBidXR0b24gewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICBib3R0b206IDMycHg7CiAgICAgICAgcmlnaHQ6IDE2cHg7CiAgICAgICAgd2lkdGg6IDQ4cHg7CiAgICAgICAgei1pbmRleDogNjAwOwogICAgICAgIGJveC1zaGFkb3c6IDAgMTJweCAxNnB4IDAgcmdiKDAgMjcgMjU1IC8gMjQlKTsKICAgICAgICBib3gtc2hhZG93OiAwIDEycHggMTZweCAwIHZhbCgtLWNvbFNoYWRvd01haW4pOwogICAgfQoKICAgIC5vb29EZXRhaWxlZFRpY2tldFR5cGVMaXN0LCAub29vRGV0YWlsZWRBY2NvcmRpb25MaXN0IHsKICAgICAgICBtYXJnaW4tdG9wOiAzMHB4OwogICAgfQp9CgpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQzNXB4KSB7CiAgICAKICAgIC5vb29QYXJlbnRTZXJ2aWNlTGlzdCB7CiAgICAgICAgbWF4LXdpZHRoOiAzNjBweDsKICAgICAgICBwYWRkaW5nOiAzcHg7CiAgICB9CgogICAgLm9vb0RldGFpbGVkTGVmdCB7CiAgICAgICAgd2lkdGg6IDMwMHB4OwogICAgfQoKICAgIC5vb29EZXRhaWxlZFJpZ2h0IHsKICAgICAgICB3aWR0aDogMzc1cHg7CiAgICB9CgogICAgLkRpYWxvZy5vb29TZXJ2aWNlQ2F0YWxvZ01vZGFsID4gLkNvbnRlbnQgewogICAgICAgIHBhZGRpbmc6IDAgMjBweDsKICAgIH0KfQo=</File>
        <File Location="var/httpd/htdocs/common/fonts/otobo.svg" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWV0YWRhdGE+R2VuZXJhdGVkIGJ5IEljb01vb248L21ldGFkYXRhPgo8ZGVmcz4KPGZvbnQgaWQ9Im90b2JvIiBob3Jpei1hZHYteD0iMTAyNCI+Cjxmb250LWZhY2UgdW5pdHMtcGVyLWVtPSIxMDI0IiBhc2NlbnQ9Ijk2MCIgZGVzY2VudD0iLTY0IiAvPgo8bWlzc2luZy1nbHlwaCBob3Jpei1hZHYteD0iMTAyNCIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwOyIgaG9yaXotYWR2LXg9IjUxMiIgZD0iIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkwMDsiIGdseXBoLW5hbWU9ImFkZCIgZD0iTTg0Ni4zNiAzOTIuMjY1aC0yNzguNjI2di0yNzguNjI2Yy0wLjY1My0zMC4yNzYtMjUuMzUxLTU0LjU2OS01NS43MjMtNTQuNTY5cy01NS4wNjkgMjQuMjkzLTU1LjcyMiA1NC41MDhsLTAuMDAxIDAuMDYxdjI3OC42MjZoLTI3OC42NWMtMC4zNDctMC4wMDgtMC43NTYtMC4wMTItMS4xNjYtMC4wMTItMzAuNzgyIDAtNTUuNzM1IDI0Ljk1My01NS43MzUgNTUuNzM1czI0Ljk1MyA1NS43MzUgNTUuNzM1IDU1LjczNWMwLjQxIDAgMC44MTktMC4wMDQgMS4yMjYtMC4wMTNsLTAuMDYxIDAuMDAxaDI3OC42MjZ2Mjc4LjY1Yy0wLjAwOCAwLjM0Ny0wLjAxMiAwLjc1Ni0wLjAxMiAxLjE2NiAwIDMwLjc4MiAyNC45NTMgNTUuNzM1IDU1LjczNSA1NS43MzVzNTUuNzM1LTI0Ljk1MyA1NS43MzUtNTUuNzM1YzAtMC40MS0wLjAwNC0wLjgxOS0wLjAxMy0xLjIyNmwwLjAwMSAwLjA2MXYtMjc4LjYyNmgyNzguNjVjMzAuMjc2LTAuNjUzIDU0LjU2OS0yNS4zNTEgNTQuNTY5LTU1LjcyM3MtMjQuMjkzLTU1LjA2OS01NC41MDgtNTUuNzIybC0wLjA2MS0wLjAwMXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTAxOyIgZ2x5cGgtbmFtZT0iYXJjaGl2ZSIgZD0iTTg3Ni4zOCA3MzYuODVsLTU5LjM5MiA3MS42OGMtMTEuNDQ0IDE0LjM1NC0yOC45MjggMjMuNDcyLTQ4LjU0MiAyMy40NzItMC4xNTcgMC0wLjMxMy0wLjAwMS0wLjQ3LTAuMDAyaC01MTEuOTc2Yy0wLjA2MyAwLTAuMTM3IDAtMC4yMTIgMC0xOS44NDEgMC0zNy41NTYtOS4xMDEtNDkuMTk4LTIzLjM1NmwtMC4wOTAtMC4xMTQtNTguODgtNzEuNjhjLTEyLjIwMy0xNC40MjctMTkuNjIxLTMzLjI0MS0xOS42MjEtNTMuNzg4IDAtMC4xNDEgMC0wLjI4MiAwLjAwMS0wLjQyM3YwLjAyMi01MzMuMzJjMC4xMzktNDcuMDc2IDM4LjI2NC04NS4yMDEgODUuMzI3LTg1LjM0aDU5Ny4zMzNjNDcuMDc2IDAuMTM5IDg1LjIwMSAzOC4yNjQgODUuMzQgODUuMzI3djUzMy4zMzNjMC4wMDEgMC4xMTkgMC4wMDEgMC4yNjEgMC4wMDEgMC40MDIgMCAyMC41NDctNy40MTggMzkuMzYyLTE5LjcyMiA1My45MTFsMC4xMDEtMC4xMjN6TTQ5Ny4wNzAgMjI4LjI3bC0yMTkuNzMgMjE5LjczaDE0OS4zNHY4NS4zNGgxNzAuNjZ2LTg1LjM0aDE0OS4zNGwtMjE5Ljc1LTIxOS43M2MtMy44NS0zLjc1OC05LjExOS02LjA3Ni0xNC45My02LjA3NnMtMTEuMDgwIDIuMzE4LTE0LjkzNCA2LjA4MGwwLjAwNC0wLjAwNHpNMjE4LjQ2IDc0Ni42NmwzNC40NjggNDIuNjhoNTEybDQwLjEtNDIuNjZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkwMjsiIGdseXBoLW5hbWU9ImFycm93X2QiIGQ9Ik0xMjcuNTcgNjQ1LjEyYy05LjcwNC05LjY0Ny0xNS43MDktMjMuMDA1LTE1LjcwOS0zNy43NjVzNi4wMDYtMjguMTE4IDE1LjcwNy0zNy43NjNsMzU0LjU1My0zNTQuNTUzYzcuNjkzLTcuNzA2IDE4LjMyNy0xMi40NzIgMzAuMDc1LTEyLjQ3MnMyMi4zODIgNC43NjcgMzAuMDc0IDEyLjQ3MmwzNTQuNTcxIDM1NC41NTFjOS42NjcgOS42NjQgMTUuNjQ2IDIzLjAxNiAxNS42NDYgMzcuNzY1IDAgMjkuNDkyLTIzLjkwOCA1My40MDEtNTMuNDAxIDUzLjQwMS0xNC43NDQgMC0yOC4wOTItNS45NzUtMzcuNzU1LTE1LjYzNmwtMzA5LjI0OC0zMDguOS0zMDkuMjQ4IDMwOS4yNDhjLTkuNjE2IDkuNTIxLTIyLjg1IDE1LjQwMy0zNy40NTggMTUuNDAzLTE0Ljc4MSAwLTI4LjE1NS02LjAyMi0zNy44MDMtMTUuNzQ3bC0wLjAwMy0wLjAwM3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTAzOyIgZ2x5cGgtbmFtZT0iYXJyb3dfbCIgZD0iTTcwOS4xMiA4MzIuNDNjLTkuNjQ2IDkuNjk4LTIzIDE1LjY5OS0zNy43NTUgMTUuNjk5cy0yOC4xMDktNi4wMDItMzcuNzUzLTE1LjY5N2wtMzU0LjU3Mi0zNTQuNTUyYy03LjcxMi03LjY5NC0xMi40ODMtMTguMzMyLTEyLjQ4My0zMC4wODVzNC43NzEtMjIuMzkxIDEyLjQ4Mi0zMC4wODRsMzU0LjU1MS0zNTQuNTcxYzkuNjY0LTkuNjY3IDIzLjAxNi0xNS42NDYgMzcuNzY1LTE1LjY0NiAyOS40OTIgMCA1My40MDEgMjMuOTA4IDUzLjQwMSA1My40MDEgMCAxNC43NDQtNS45NzUgMjguMDkyLTE1LjYzNiAzNy43NTVsLTMwOC45IDMwOS4yNDggMzA5LjI0OCAzMDkuMjQ4YzkuNTI3IDkuNjE3IDE1LjQxMyAyMi44NTUgMTUuNDEzIDM3LjQ2OCAwIDE0Ljc4Ni02LjAyNyAyOC4xNjQtMTUuNzU3IDM3LjgxM2wtMC4wMDQgMC4wMDR6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkwNDsiIGdseXBoLW5hbWU9ImFycm93X3IiIGQ9Ik0zMTQuODggODMyLjQzYzkuNjQ2IDkuNjk4IDIzIDE1LjY5OSAzNy43NTUgMTUuNjk5czI4LjEwOS02LjAwMiAzNy43NTMtMTUuNjk3bDM1NC41NzItMzU0LjU1MmM3LjcxMi03LjY5NCAxMi40ODMtMTguMzMyIDEyLjQ4My0zMC4wODVzLTQuNzcxLTIyLjM5MS0xMi40ODItMzAuMDg0bC0zNTQuNjMzLTM1NC41NzFjLTkuNjYyLTkuNjYyLTIzLjAxMS0xNS42MzktMzcuNzU1LTE1LjYzOS0yOS40ODggMC01My4zOTMgMjMuOTA1LTUzLjM5MyA1My4zOTMgMCAxNC43NDQgNS45NzYgMjguMDkzIDE1LjYzOSAzNy43NTV2MGwzMDguOTgyIDMwOS4zNS0zMDkuMjQ4IDMwOS4yNDhjLTkuNTAyIDkuNjEzLTE1LjM3MiAyMi44MzQtMTUuMzcyIDM3LjQyNyAwIDE0Ljc1NSA2LjAwMiAyOC4xMDkgMTUuNjk3IDM3Ljc1M2wwLjAwMiAwLjAwMnoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTA1OyIgZ2x5cGgtbmFtZT0iYXJyb3dfcjIiIGQ9Ik00MTcuMDU1IDE5Ny44MzhjLTguNTA3IDguNTAzLTEzLjc2OSAyMC4yNTEtMTMuNzY5IDMzLjIyOXM1LjI2MiAyNC43MjYgMTMuNzY4IDMzLjIyOWwxNTAuMjQxIDE1MC4yaC01MTkuOTY3Yy0wLjg3NS0wLjA2MS0xLjg5Ni0wLjA5Ni0yLjkyNS0wLjA5Ni0yMy40NDIgMC00Mi42NTIgMTguMTE2LTQ0LjM5NSA0MS4xMTFsLTAuMDA5IDAuMTVjMS43NzQgMjMuMTQ4IDIwLjk5MyA0MS4yNTggNDQuNDQyIDQxLjI1OCAxLjAxNiAwIDIuMDI0LTAuMDM0IDMuMDIzLTAuMTAxbC0wLjEzNSAwLjAwN2g1MDIuOTg5bC0xMzMuMjYzIDEzMy4yNDNjLTguNDA5IDguNjM1LTEzLjU5NSAyMC40NDQtMTMuNTk1IDMzLjQ2NHM1LjE4NiAyNC44MyAxMy42MDUgMzMuNDc1bC0wLjAxMC0wLjAxMWM4LjQ5NCA4LjUyNyAyMC4yNDUgMTMuODAzIDMzLjIyOSAxMy44MDNzMjQuNzM1LTUuMjc2IDMzLjIyNy0xMy44MDFsMjE2LjM1Mi0yMTYuMzUyYzguNTA3LTguNTAzIDEzLjc2OS0yMC4yNTEgMTMuNzY5LTMzLjIyOXMtNS4yNjItMjQuNzI2LTEzLjc2OC0zMy4yMjlsLTIxNi4zNzEtMjE2LjM1MWMtOC41MDMtOC41MDctMjAuMjUxLTEzLjc2OS0zMy4yMjktMTMuNzY5cy0yNC43MjYgNS4yNjItMzMuMjI5IDEzLjc2OHYwek03MjcuNDA5IDYzMC4wMjdsMTgyLjg4Ni0xODIuODg2LTE4Mi44ODYtMTgyLjg4NmMtOS4wMjktOC41ODItMTQuNjQ2LTIwLjY4MS0xNC42NDYtMzQuMDkyIDAtMjUuOTU4IDIxLjA0My00Ny4wMDIgNDcuMDAyLTQ3LjAwMiAxMy40MTYgMCAyNS41MTkgNS42MjEgMzQuMDgzIDE0LjYzNmwwLjAxOSAwLjAyMCAyMTYuMzUxIDIxNi4zNTFjOC41MTcgOC40OTggMTMuNzg2IDIwLjI0OCAxMy43ODYgMzMuMjI5cy01LjI2OSAyNC43MzEtMTMuNzg1IDMzLjIyOGwtMjE2LjM1MiAyMTYuMzMxYy04LjQ5OCA4LjUxNy0yMC4yNDggMTMuNzg2LTMzLjIyOSAxMy43ODZzLTI0LjczMS01LjI2OS0zMy4yMjgtMTMuNzg1bC0wLjAwMS0wLjAwMWMtOC40MTgtOC42My0xMy42MTEtMjAuNDQxLTEzLjYxMS0zMy40NjRzNS4xOTMtMjQuODM0IDEzLjYyMS0zMy40NzRsLTAuMDEwIDAuMDEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5MDY7IiBnbHlwaC1uYW1lPSJhcnJvd191IiBkPSJNMTI3LjU3IDI1MC44OGMtOS42OTggOS42NDYtMTUuNjk5IDIzLTE1LjY5OSAzNy43NTVzNi4wMDIgMjguMTA5IDE1LjY5NyAzNy43NTNsMzU0LjU1MiAzNTQuNTcyYzcuNjk0IDcuNzEyIDE4LjMzMiAxMi40ODMgMzAuMDg1IDEyLjQ4M3MyMi4zOTEtNC43NzEgMzAuMDg0LTEyLjQ4MmwzNTQuNTcxLTM1NC42MzNjOS42NjItOS42NjIgMTUuNjM5LTIzLjAxMSAxNS42MzktMzcuNzU1IDAtMjkuNDg4LTIzLjkwNS01My4zOTMtNTMuMzkzLTUzLjM5My0xNC43NDQgMC0yOC4wOTMgNS45NzYtMzcuNzU1IDE1LjYzOXYwbC0zMDkuMzUgMzA4Ljk4Mi0zMDkuMjQ4LTMwOS4yNDhjLTkuNjEzLTkuNTAyLTIyLjgzNC0xNS4zNzItMzcuNDI3LTE1LjM3Mi0xNC43NTUgMC0yOC4xMDkgNi4wMDItMzcuNzUzIDE1LjY5N2wtMC4wMDIgMC4wMDJ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkwNzsiIGdseXBoLW5hbWU9ImF0dGFjaG1lbnQiIGQ9Ik03MDQuMDIwIDY3Mi4wMTB2LTQ1MS40MmMwLjAxNC0wLjgyOCAwLjAyMi0xLjgwNCAwLjAyMi0yLjc4MyAwLTg5LjM4OS02Ni43ODUtMTYzLjE4LTE1My4xODEtMTc0LjE5NmwtMC44NzEtMC4wOTFjLTUuMDc5LTAuNTM3LTEwLjk3Mi0wLjg0NC0xNi45MzctMC44NDQtOTQuMDk0IDAtMTcwLjM3MyA3Ni4yNzktMTcwLjM3MyAxNzAuMzczIDAgMC4xMDIgMCAwLjIwNSAwIDAuMzA3di0wLjAxNiA1MjcuMzZjLTAuMDE4IDAuNzQzLTAuMDI4IDEuNjE4LTAuMDI4IDIuNDk1IDAgNTUuODI2IDQxLjMwMyAxMDIuMDA2IDk1LjAxOSAxMDkuNjQ2bDAuNTkgMC4wNjljMy4zMjMgMC4zNjcgNy4xNzcgMC41NzcgMTEuMDgwIDAuNTc3IDU4LjkxOCAwIDEwNi42OC00Ny43NjIgMTA2LjY4LTEwNi42OCAwLTAuMDUyIDAtMC4xMDMgMC0wLjE1NXYwLjAwOC00NDcuOThjMC0yMy41NjYtMTkuMTA0LTQyLjY3LTQyLjY3LTQyLjY3cy00Mi42NyAxOS4xMDQtNDIuNjcgNDIuNjd2MCAzNzMuMzNjLTAuNDUyIDE3LjMyNy0xNC42MDYgMzEuMjAxLTMyIDMxLjIwMXMtMzEuNTQ4LTEzLjg3NC0zMS45OTktMzEuMTU5bC0wLjAwMS0wLjA0MnYtMzY3LjM3Yy0wLjAxOC0wLjc0My0wLjAyOC0xLjYxOC0wLjAyOC0yLjQ5NSAwLTU1LjgyNiA0MS4zMDMtMTAyLjAwNiA5NS4wMTktMTA5LjY0NmwwLjU5LTAuMDY5YzMuMzIzLTAuMzY3IDcuMTc3LTAuNTc3IDExLjA4MC0wLjU3NyA1OC45MTggMCAxMDYuNjggNDcuNzYyIDEwNi42OCAxMDYuNjggMCAwLjA1MiAwIDAuMTAzIDAgMC4xNTV2LTAuMDA4IDQ0MC43M2MwLjAxNCAwLjgyOCAwLjAyMiAxLjgwNCAwLjAyMiAyLjc4MyAwIDg5LjM4OS02Ni43ODUgMTYzLjE4LTE1My4xODEgMTc0LjE5NmwtMC44NzEgMC4wOTFjLTUuMDExIDAuNTIyLTEwLjgyNiAwLjgyMS0xNi43MTIgMC44MjEtOTQuMjE5IDAtMTcwLjU5OC03Ni4zOC0xNzAuNTk4LTE3MC41OTggMC0wLjAwOCAwLTAuMDE1IDAtMC4wMjN2MC4wMDEtNTIzLjUzYzAtMTIyLjQ1IDg5LjYtMjMyLjEgMjExLjYyLTI0My43MTIgNi44NDctMC43MDkgMTQuNzk0LTEuMTEzIDIyLjgzNS0xLjExMyAxMjkuNzIzIDAgMjM0Ljg4NSAxMDUuMTYyIDIzNC44ODUgMjM0Ljg4NSAwIDAuMDQ2IDAgMC4wOTEgMCAwLjEzN3YtMC4wMDcgNDU4Ljc1MmMtMC40NTIgMTcuMzI3LTE0LjYwNiAzMS4yMDEtMzIgMzEuMjAxcy0zMS41NDgtMTMuODc0LTMxLjk5OS0zMS4xNTlsLTAuMDAxLTAuMDQyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5MDg7IiBnbHlwaC1uYW1lPSJib3hjaGVja19lZCIgZD0iTTk3LjUyNCA5NjBjLTUzLjE4NSAwLTk3LjUyNC00NC4zMzktOTcuNTI0LTk3LjUyNHYtODI4Ljk1MmMwLTUzLjE4NSA0NC4zMzktOTcuNTI0IDk3LjUyNC05Ny41MjRoODI4Ljk1MmM1My4xODUgMCA5Ny41MjQgNDQuMzM5IDk3LjUyNCA5Ny41MjR2ODI4Ljk1MmMwIDUzLjE4NS00NC4zMzkgOTcuNTI0LTk3LjUyNCA5Ny41MjRoLTgyOC45NTJ6TTk3LjUyNCA4NjIuNDc2aDgyOC45NTJ2LTgyOC45NTJoLTgyOC45NTJ2ODI4Ljk1MnpNNzQ1Ljg5IDYzMC45MDZjLTAuMTgzIDAuMDAyLTAuMzk4IDAuMDA0LTAuNjE0IDAuMDA0LTEzLjQ2NyAwLTI1LjY1OC01LjQ2MS0zNC40ODEtMTQuMjg5bC0yNTguMzM0LTI1OC4zMzQtMTAyLjE5IDEwMi4xNDNjLTguODIyIDguODI2LTIxLjAxMiAxNC4yODUtMzQuNDc2IDE0LjI4NXMtMjUuNjU0LTUuNDU5LTM0LjQ3Ni0xNC4yODV2MGMtOC44MTEtOC44Mi0xNC4yNjEtMjEtMTQuMjYxLTM0LjQ1MnM1LjQ0OS0yNS42MzMgMTQuMjYxLTM0LjQ1M3YwbDEzNi42NjctMTM2LjY2N2M4LjgyMy04LjgyNCAyMS4wMTItMTQuMjgzIDM0LjQ3Ni0xNC4yODNzMjUuNjU0IDUuNDU4IDM0LjQ3NiAxNC4yODNsMjkyLjgxIDI5Mi44MWM4LjgyNiA4LjgyMiAxNC4yODUgMjEuMDEyIDE0LjI4NSAzNC40NzZzLTUuNDU5IDI1LjY1NC0xNC4yODUgMzQuNDc2djBjLTguNjc5IDguNjg1LTIwLjYxOCAxNC4xMTEtMzMuODI0IDE0LjI4NWgtMC4wMzN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkwOTsiIGdseXBoLW5hbWU9ImJveGNoZWNrX29vbyIgZD0iTTEzMy4zMzcgODk2Yy03My4wNDgtMC4yMDUtMTMzLjEyOC02MC4yODUtMTMzLjMzMy0xMzMuMzMzIDAtMC4wMTkgMC0wLjA0MSAwLTAuMDYzczAtMC4wNDQgMC0wLjA2NnYwLjAwMy02MjcuMjkyYzAtMC4wMTkgMC0wLjA0MSAwLTAuMDYzczAtMC4wNDQgMC0wLjA2NnYwLjAwM2MwLjIwNS03My4wNDggNjAuMjg1LTEzMy4xMjggMTMzLjMzMy0xMzMuMzMzIDAuMDEyIDAgMC4wMjcgMCAwLjA0MiAwczAuMDI5IDAgMC4wNDQgMGg2MjcuMzMxYzAuMDE5IDAgMC4wNDEgMCAwLjA2MyAwczAuMDQ0IDAgMC4wNjYgMGgtMC4wMDNjNzMuMDQ4IDAuMjA1IDEzMy4xMjggNjAuMjg1IDEzMy4zMzMgMTMzLjMzMyAwIDAuMDE5IDAgMC4wNDEgMCAwLjA2M3MwIDAuMDQ0IDAgMC4wNjZ2LTAuMDAzIDI2Ny43NWMwIDIzLjU2NC0xOS4xMDMgNDIuNjY3LTQyLjY2NyA0Mi42Njd2MGMtMjMuNTY0IDAtNDIuNjY3LTE5LjEwMy00Mi42NjctNDIuNjY3djAtMjY3LjY2N2MtMC4wNzYtMjcuMS0yMS4xNDktNDguMTMyLTQ4LjI1LTQ4LjIwOGgtNjI3LjA4M2MtMjcuMSAwLjA3Ni00OC4xMzIgMjEuMTA4LTQ4LjIwOCA0OC4yMDh2NjI3LjEyNWMwLjA3NiAyNy4xMDEgMjEuMTA4IDQ4LjEzMiA0OC4yMDggNDguMjA4aDU2Ni44NzVjMjMuNTY0IDAgNDIuNjY3IDE5LjEwMyA0Mi42NjcgNDIuNjY3djBjMCAyMy41NjQtMTkuMTAzIDQyLjY2Ny00Mi42NjcgNDIuNjY3djBoLTU2N2MtMC4wMTIgMC0wLjAyNyAwLTAuMDQyIDBzLTAuMDI5IDAtMC4wNDQgMGgwLjAwMnpNOTU1LjU5IDgyNy43MzNjLTAuMTU4IDAuMDAyLTAuMzQ1IDAuMDAzLTAuNTMyIDAuMDAzLTExLjc4NSAwLTIyLjQ1NS00Ljc3OC0zMC4xNzYtMTIuNTAzbC00ODAuMDgzLTQ4MC4wODNjLTcuNzMyLTcuNzIzLTEyLjUxNC0xOC4zOTctMTIuNTE0LTMwLjE4N3M0Ljc4My0yMi40NjUgMTIuNTE0LTMwLjE4N3YwYzcuNzIxLTcuNzE5IDE4LjM4Ni0xMi40OTQgMzAuMTY3LTEyLjQ5NHMyMi40NDYgNC43NzQgMzAuMTY3IDEyLjQ5NGw0ODAuMTI1IDQ4MC4xMjVjNy43MTkgNy43MjEgMTIuNDk0IDE4LjM4NiAxMi40OTQgMzAuMTY3cy00Ljc3NCAyMi40NDYtMTIuNDk0IDMwLjE2N3YwYy03LjYwNCA3LjYwNy0xOC4wNjcgMTIuMzU3LTI5LjY0IDEyLjVoLTAuMDI3ek0yODAuNDk5IDU0Mi42NTZjLTAuMTU4IDAuMDAyLTAuMzQ1IDAuMDAzLTAuNTMyIDAuMDAzLTExLjc4NSAwLTIyLjQ1NS00Ljc3OC0zMC4xNzYtMTIuNTAzdjBjLTcuNzE5LTcuNzIxLTEyLjQ5NC0xOC4zODYtMTIuNDk0LTMwLjE2N3M0Ljc3NC0yMi40NDYgMTIuNDk0LTMwLjE2N2w2NS40MTctNjUuNDE3YzcuNzIxLTcuNzE5IDE4LjM4Ni0xMi40OTQgMzAuMTY3LTEyLjQ5NHMyMi40NDYgNC43NzQgMzAuMTY3IDEyLjQ5NHYwYzcuNzE5IDcuNzIxIDEyLjQ5NCAxOC4zODYgMTIuNDk0IDMwLjE2N3MtNC43NzQgMjIuNDQ2LTEyLjQ5NCAzMC4xNjdsLTY1LjQxNyA2NS40MTdjLTcuNTk1IDcuNTk4LTE4LjA0MSAxMi4zNDUtMjkuNTk2IDEyLjVoLTAuMDI5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5MGE7IiBnbHlwaC1uYW1lPSJib3hjaGVja19zZW1pIiBkPSJNOTcuNTI0IDk2MGMtNTMuMTg1IDAtOTcuNTI0LTQ0LjMzOS05Ny41MjQtOTcuNTI0di04MjguOTUyYzAtNTMuMTg1IDQ0LjMzOS05Ny41MjQgOTcuNTI0LTk3LjUyNGg4MjguOTUyYzUzLjE4NSAwIDk3LjUyNCA0NC4zMzkgOTcuNTI0IDk3LjUyNHY4MjguOTUyYzAgNTMuMTg1LTQ0LjMzOSA5Ny41MjQtOTcuNTI0IDk3LjUyNGgtODI4Ljk1MnpNOTcuNTI0IDg2Mi40NzZoODI4Ljk1MnYtODI4Ljk1MmgtODI4Ljk1MnY4MjguOTUyek03MTkuMTkgNDg0LjYxOWwtMzg4LjY2Ny0wLjIzOGMtMjYuOTEtMC4wMjctNDguNzE0LTIxLjg0OC00OC43MTQtNDguNzYyIDAtMC4wMTcgMC0wLjAzNCAwLTAuMDUwdjAuMDAzYzAuMDI3LTI2LjkxIDIxLjg0OC00OC43MTQgNDguNzYyLTQ4LjcxNGwzODguNjY3IDAuMjM4YzI2LjkxIDAuMDI3IDQ4LjcxNCAyMS44NDggNDguNzE0IDQ4Ljc2MnYwYzAgMjYuOTMtMjEuODMxIDQ4Ljc2Mi00OC43NjIgNDguNzYydjB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkwYjsiIGdseXBoLW5hbWU9ImJveGNoZWNrIiBkPSJNOTcuNTI0IDg2Mi40NzZ2LTgyOC45NTJoODI4Ljk1MnY4MjguOTUyaC04MjguOTUyek05Ny41MjQgOTYwaDgyOC45NTJjNTMuODYxIDAgOTcuNTI0LTQzLjY2MyA5Ny41MjQtOTcuNTI0djAtODI4Ljk1MmMwLTUzLjg2MS00My42NjMtOTcuNTI0LTk3LjUyNC05Ny41MjR2MGgtODI4Ljk1MmMtNTMuODYxIDAtOTcuNTI0IDQzLjY2My05Ny41MjQgOTcuNTI0djAgODI4Ljk1MmMwIDUzLjg2MSA0My42NjMgOTcuNTI0IDk3LjUyNCA5Ny41MjR2MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTBjOyIgZ2x5cGgtbmFtZT0iY2FsZW5kYXIiIGQ9Ik04MDYuMDExIDgyNS45NzloLTQ2LjU1MXY0Ni41MzFjMCAyNS42OTgtMjAuODMyIDQ2LjUzMS00Ni41MzEgNDYuNTMxcy00Ni41MzEtMjAuODMyLTQ2LjUzMS00Ni41MzF2LTQ2LjUzMWgtMzcyLjI4NXY0Ni41MzFjMCAyNS42OTgtMjAuODMyIDQ2LjUzMS00Ni41MzEgNDYuNTMxcy00Ni41MzEtMjAuODMyLTQ2LjUzMS00Ni41MzF2MC00Ni41MzFoLTQ2LjU1MWMtNTEuMTUzLTAuMDIzLTkyLjYxMS00MS40OTYtOTIuNjExLTkyLjY1MiAwLTAuMTQ0IDAtMC4yODggMC4wMDEtMC40MzJ2MC4wMjJsLTAuNDUxLTY1MS41MWMwLTAuMDA2IDAtMC4wMTMgMC0wLjAyMCAwLTUxLjM4NSA0MS42NTYtOTMuMDQxIDkzLjA0MS05My4wNDEgMC4wMDcgMCAwLjAxNCAwIDAuMDIyIDBoNjUxLjUwOWM1MS4zMzEgMC4xNjIgOTIuODk5IDQxLjczIDkzLjA2MSA5My4wNDZ2NjUxLjUwNWMtMC4xNTEgNTEuMzM5LTQxLjcyMyA5Mi45MTktOTMuMDQ1IDkzLjA4MmgtMC4wMTZ6TTgwNi4wMTEgMTI3Ljk1OWMtMC4wNzAtMjUuNjgxLTIwLjg3LTQ2LjQ4MS00Ni41NDQtNDYuNTUxaC01NTguNDE1Yy0yNS42NjUgMC4wODEtNDYuNDQ5IDIwLjg2NS00Ni41MzEgNDYuNTIzdjQ2NS4zNTVoNjUxLjQ4OXpNMjQ3LjU4MyA1MDAuMjI0aDkzLjA2MXYtOTMuMDYxaC05My4wNjF6TTQzMy43MjUgNTAwLjIyNGg5My4wNjF2LTkzLjA2MWgtOTMuMDYxek02MTkuODY4IDUwMC4yMjRoOTMuMDYxdi05My4wNjFoLTkzLjA2MXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTBkOyIgZ2x5cGgtbmFtZT0iY2xvc2UiIGQ9Ik04NzUuMjc2IDgxMC43MTVjLTEwLjM5NiAxMC40MjMtMjQuNzcyIDE2Ljg3Mi00MC42NTUgMTYuODcycy0zMC4yNTktNi40NDktNDAuNjU0LTE2Ljg3MWwtMC4wMDEtMC4wMDEtMjgxLjk2Ni0yODEuNDA1LTI4MS45OSAyODEuOTY2Yy0xMC4zMTIgOS45MDUtMjQuMzQ0IDE2LjAwNS0zOS44MDEgMTYuMDA1LTMxLjc1MSAwLTU3LjQ5LTI1LjczOS01Ny40OS01Ny40OSAwLTE1LjQ1NyA2LjEtMjkuNDg5IDE2LjAyNC0zOS44MmwtMC4wMTggMC4wMTkgMjgxLjk2Ni0yODEuOTktMjgxLjk2Ni0yODEuOTljLTkuOTA1LTEwLjMxMi0xNi4wMDUtMjQuMzQ0LTE2LjAwNS0zOS44MDEgMC0zMS43NTEgMjUuNzM5LTU3LjQ5IDU3LjQ5LTU3LjQ5IDE1LjQ1NyAwIDI5LjQ4OSA2LjEgMzkuODIgMTYuMDI0bC0wLjAxOS0wLjAxOCAyODEuOTkgMjgxLjk2NiAyODEuOTktMjgxLjk2NmMxMC4zMTItOS45MDUgMjQuMzQ0LTE2LjAwNSAzOS44MDEtMTYuMDA1IDMxLjc1MSAwIDU3LjQ5IDI1LjczOSA1Ny40OSA1Ny40OSAwIDE1LjQ1Ny02LjEgMjkuNDg5LTE2LjAyNCAzOS44MmwwLjAxOC0wLjAxOS0yODEuOTY2IDI4MS45OSAyODEuOTY2IDI4MS45OWMxMC4xNjQgMTAuNDA1IDE2LjQzNCAyNC42NTIgMTYuNDM0IDQwLjM2M3MtNi4yNyAyOS45NTgtMTYuNDQ1IDQwLjM3NGwwLjAxMS0wLjAxMXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTBlOyIgZ2x5cGgtbmFtZT0iZGFzaGJvYXJkIiBkPSJNMTcwLjY2IDQwNS4zNGgyNTZjMjMuNTMyIDAuMDcwIDQyLjU5IDE5LjEyNyA0Mi42NiA0Mi42NTN2MzQxLjM0N2MtMC4wNzAgMjMuNTMyLTE5LjEyNyA0Mi41OS00Mi42NTMgNDIuNjZoLTI1Ni4wMDdjLTIzLjUzMi0wLjA3MC00Mi41OS0xOS4xMjctNDIuNjYtNDIuNjUzdi0zNDEuMzQ3YzAuMDcwLTIzLjUzMiAxOS4xMjctNDIuNTkgNDIuNjUzLTQyLjY2aDAuMDA3ek0xNzAuNjYgNjRoMjU2YzIzLjUzMiAwLjA3MCA0Mi41OSAxOS4xMjcgNDIuNjYgNDIuNjUzdjE3MC42ODdjLTAuMDcwIDIzLjUzMi0xOS4xMjcgNDIuNTktNDIuNjUzIDQyLjY2aC0yNTYuMDA3Yy0yMy41MzItMC4wNzAtNDIuNTktMTkuMTI3LTQyLjY2LTQyLjY1M3YtMTcwLjY2N2MwLjA1OC0yMy41NDEgMTkuMTItNDIuNjExIDQyLjY1My00Mi42OGgwLjAwN3pNNTk3LjMyIDY0aDI1NmMyMy41NDEgMC4wNTggNDIuNjExIDE5LjEyIDQyLjY4IDQyLjY1M3YzNDEuMzQ3Yy0wLjA3MCAyMy41MzItMTkuMTI3IDQyLjU5LTQyLjY1MyA0Mi42NmgtMjU2LjAwN2MtMjMuNTMyLTAuMDcwLTQyLjU5LTE5LjEyNy00Mi42Ni00Mi42NTN2LTM0MS4zNDdjMC4wNzAtMjMuNTMyIDE5LjEyNy00Mi41OSA0Mi42NTMtNDIuNjZoMC4wMDd6TTU1NC42NiA3ODkuMzR2LTE3MC42NmMwLjA1OC0yMy41NDggMTkuMTMyLTQyLjYyMiA0Mi42NzUtNDIuNjhoMjU2LjAwNmMyMy41MzIgMC4wNzAgNDIuNTkgMTkuMTI3IDQyLjY2IDQyLjY1M3YxNzAuNjg3Yy0wLjA3MCAyMy41MzItMTkuMTI3IDQyLjU5LTQyLjY1MyA0Mi42NmgtMjU2LjAwN2MtMjMuNTQxLTAuMDU4LTQyLjYxMS0xOS4xMi00Mi42OC00Mi42NTN2LTAuMDA3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5MGY7IiBnbHlwaC1uYW1lPSJkZWxldGVfb3V0bCIgZD0iTTI5Mi41NzcgMTk5LjEwN2MwLjctMzkuNDIyIDMyLjgyMi03MS4xMTEgNzIuMzQ1LTcxLjExMSAwLjI3NyAwIDAuNTU0IDAuMDAyIDAuODMxIDAuMDA1aDI5Mi41MzVjMC4yMzQtMC4wMDMgMC41MTItMC4wMDQgMC43ODktMC4wMDQgMzkuNTIzIDAgNzEuNjQ1IDMxLjY4OSA3Mi4zNDQgNzEuMDQ1bDAuMDAxIDAuMDY2djM1NS41NTNjLTAuNyAzOS40MjItMzIuODIyIDcxLjExMS03Mi4zNDUgNzEuMTExLTAuMjc3IDAtMC41NTQtMC4wMDItMC44MzEtMC4wMDVoLTI5Mi41MzVjLTAuMjM0IDAuMDAzLTAuNTEyIDAuMDA0LTAuNzg5IDAuMDA0LTM5LjUyMyAwLTcxLjY0NS0zMS42ODktNzIuMzQ0LTcxLjA0NWwtMC4wMDEtMC4wNjZ6TTQwMi4yODkgNTU0LjY2aDIxOS40MjNjMC4xMTcgMC4wMDEgMC4yNTYgMC4wMDIgMC4zOTUgMC4wMDIgMTkuNzY0IDAgMzUuODI3LTE1Ljg0MyAzNi4xODItMzUuNTIydi0yODQuNDhjLTAuMzU2LTE5LjcxMi0xNi40MTktMzUuNTU1LTM2LjE4My0zNS41NTUtMC4xMzkgMC0wLjI3NyAwLjAwMS0wLjQxNiAwLjAwMmgtMjE5LjQwMmMtMC4xMTctMC4wMDEtMC4yNTYtMC4wMDItMC4zOTUtMC4wMDItMTkuNzY0IDAtMzUuODI3IDE1Ljg0My0zNi4xODIgMzUuNTIydjI4NC40OGMwLjM1NiAxOS43MTIgMTYuNDE5IDM1LjU1NSAzNi4xODMgMzUuNTU1IDAuMTM5IDAgMC4yNzctMC4wMDEgMC40MTYtMC4wMDJoLTAuMDIxek02NDAgNzMyLjQ0N2wtMjUuOTY5IDI1LjMxM2MtNi42NjMgNi4zMTMtMTUuNjczIDEwLjIwNS0yNS41OTMgMTAuMjRoLTE1Mi44N2MtOS45MjctMC4wMzUtMTguOTM3LTMuOTI3LTI1LjYxNy0xMC4yNTZsMC4wMTcgMC4wMTYtMjUuOTY5LTI1LjMxM2gtOTEuNDIzYy0wLjM2IDAuMDEzLTAuNzgyIDAuMDIwLTEuMjA3IDAuMDIwLTE5LjY0NyAwLTM1LjU3NC0xNS45MjctMzUuNTc0LTM1LjU3NHMxNS45MjctMzUuNTc0IDM1LjU3NC0zNS41NzRjMC40MjQgMCAwLjg0NyAwLjAwNyAxLjI2OCAwLjAyMmwtMC4wNjEtMC4wMDJoNDM4Ljg0NWMwLjM2LTAuMDEzIDAuNzgyLTAuMDIwIDEuMjA3LTAuMDIwIDE5LjY0NyAwIDM1LjU3NCAxNS45MjcgMzUuNTc0IDM1LjU3NHMtMTUuOTI3IDM1LjU3NC0zNS41NzQgMzUuNTc0Yy0wLjQyNCAwLTAuODQ3LTAuMDA3LTEuMjY4LTAuMDIybDAuMDYxIDAuMDAyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5MTA7IiBnbHlwaC1uYW1lPSJkZWxldGUiIGQ9Ik0yNTUuOTggMTQ5LjM0YzAuMTM5LTQ3LjA3NiAzOC4yNjQtODUuMjAxIDg1LjMyNy04NS4zNGgzNDEuMzUzYzQ3LjA3NiAwLjEzOSA4NS4yMDEgMzguMjY0IDg1LjM0IDg1LjMyN3Y0MjYuNjczYy0wLjEzOSA0Ny4wNzYtMzguMjY0IDg1LjIwMS04NS4zMjcgODUuMzRoLTM0MS4zNTNjLTQ3LjA3Ni0wLjEzOS04NS4yMDEtMzguMjY0LTg1LjM0LTg1LjMyN3YtMC4wMTN6TTc2Ny45OCA3ODkuMzRoLTEwNi42NmwtMzAuMjA4IDMwLjM3MmMtNy43MTQgNy41NjMtMTguMjc3IDEyLjI0NC0yOS45MzMgMTIuMjg4aC0xNzguMzY5Yy0xMS42MzUtMC4wNjctMjIuMTY1LTQuNzQ0LTI5Ljg2Ny0xMi4yOTVsMC4wMDcgMC4wMDctMzAuMjktMzAuMzcyaC0xMDYuNjhjLTIzLjU2NiAwLTQyLjY3LTE5LjEwNC00Mi42Ny00Mi42N3MxOS4xMDQtNDIuNjcgNDIuNjctNDIuNjdoNTEyYzIzLjU2NiAwIDQyLjY3IDE5LjEwNCA0Mi42NyA0Mi42N3MtMTkuMTA0IDQyLjY3LTQyLjY3IDQyLjY3djB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkxMTsiIGdseXBoLW5hbWU9ImZhcSIgZD0iTTg1NS45NDEgNzA1Ljg2NGgtNDMuMDA4di0zNDMuODM5Yy0wLjA1OC0yMy43MjktMTkuMjc5LTQyLjk1LTQzLjAwMi00My4wMDhoLTUxNS43NzR2LTQzLjAwOGMwLjEyOC00Ny40NTQgMzguNTYyLTg1Ljg4OCA4Ni4wMDQtODYuMDE2aDQyOS44MDVsMTcyLjAzMi0xNzIuMDMydjYwMS45ODljLTAuMTg2IDQ3LjQyNC0zOC42MjEgODUuODA5LTg2LjA0NyA4NS45MTRoLTAuMDEwek03MjYuOTE3IDQ5MC44MjR2MzAxLjA1NmMtMC4xMjggNDcuNDU0LTM4LjU2MiA4NS44ODgtODYuMDA0IDg2LjAxNmgtNDcyLjc3MmMtNDcuNDU0LTAuMTI4LTg1Ljg4OC0zOC41NjItODYuMDE2LTg2LjAwNHYtNTU4Ljg1bDE3Mi4wMzIgMTcyLjAzMmgzODYuODI2YzQ3LjQwOSAwLjEzOSA4NS44MSAzOC41MTEgODUuOTk1IDg1Ljg5NnYwLjAxOHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTEyOyIgZ2x5cGgtbmFtZT0iZmlsdGVyX2xpc3QiIGQ9Ik00NjkuMzQgMTkyaDg1LjM0YzIzLjU2NiAwIDQyLjY3IDE5LjEwNCA0Mi42NyA0Mi42N3MtMTkuMTA0IDQyLjY3LTQyLjY3IDQyLjY3aC04NS4zNGMtMjMuNTY2IDAtNDIuNjctMTkuMTA0LTQyLjY3LTQyLjY3czE5LjEwNC00Mi42NyA0Mi42Ny00Mi42N3Ywek0xMjggNjYxLjM0YzAuMDcwLTIzLjUzMiAxOS4xMjctNDIuNTkgNDIuNjUzLTQyLjY2aDY4Mi42ODdjMjMuNTY2IDAgNDIuNjcgMTkuMTA0IDQyLjY3IDQyLjY3cy0xOS4xMDQgNDIuNjctNDIuNjcgNDIuNjdoLTY4Mi42OGMtMjMuNTM5LTAuMDcwLTQyLjYwMi0xOS4xMzktNDIuNjYtNDIuNjc1di0wLjAwNnpNMjk4LjY2IDQwNS4zNGg0MjYuNjhjMjMuNTY2IDAgNDIuNjcgMTkuMTA0IDQyLjY3IDQyLjY3cy0xOS4xMDQgNDIuNjctNDIuNjcgNDIuNjdoLTQyNi42OGMtMjMuNTY2IDAtNDIuNjctMTkuMTA0LTQyLjY3LTQyLjY3czE5LjEwNC00Mi42NyA0Mi42Ny00Mi42N3YweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5MTM7IiBnbHlwaC1uYW1lPSJmaWx0ZXIiIGQ9Ik00Ni41NDUgOTI1LjA5MWMtMjUuNzA0LTAuMDA2LTQ2LjUzOS0yMC44NDUtNDYuNTM5LTQ2LjU1IDAtMTEuMDg4IDMuODc3LTIxLjI3MSAxMC4zNDktMjkuMjY3bC0wLjA2OSAwLjA4OCAzNDkuMzI0LTQzNC4zMTh2LTM5NS43MjdjMC4wMTAtMjUuNzAxIDIwLjg0Ny00Ni41MzMgNDYuNTUtNDYuNTMzIDcuMDIwIDAgMTMuNjc2IDEuNTU0IDE5LjY0NSA0LjMzNmwtMC4yODYtMC4xMiAyMDIuNDQ5IDkyLjcyNmMxNi4xNyA3LjUyOCAyNy4xNzggMjMuNjM4IDI3LjE4MyA0Mi4zMTl2MzAyLjY4NGwzNTguMjE0IDQzNC4xODFjNi42MjggNy45ODQgMTAuNjUgMTguMzM5IDEwLjY1IDI5LjYzMyAwIDI1LjcwOS0yMC44NDEgNDYuNTUtNDYuNTUgNDYuNTUtMC4wMDQgMC0wLjAwNyAwLTAuMDExIDBoMC4wMDF6TTE0My43MzIgODMyaDczNC45NTNsLTMwNS45OS0zNzAuOTU2Yy02LjYxOS03Ljk4MS0xMC42MzYtMTguMzI5LTEwLjYzNi0yOS42MTUgMC0wLjAwNyAwLTAuMDE0IDAtMC4wMjF2MC4wMDEtMjg5LjUwMWwtMTA5LjM1OS01MC4wOTB2MzM5LjU5MWMtMC4wMDEgMTEuMDkwLTMuODggMjEuMjczLTEwLjM1NSAyOS4yNjlsMC4wNjgtMC4wODd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkxNDsiIGdseXBoLW5hbWU9ImhlbHAiIGQ9Ik01MTIuMDIwIDg2MS4wMjBjLTAuMDA2IDAtMC4wMTMgMC0wLjAyMCAwLTIyOC4xMDUgMC00MTMuMDIwLTE4NC45MTUtNDEzLjAyMC00MTMuMDIwczE4NC45MTUtNDEzLjAyMCA0MTMuMDIwLTQxMy4wMjBjMjI4LjEwNSAwIDQxMy4wMjAgMTg0LjkxNSA0MTMuMDIwIDQxMy4wMjB2MGMtMC4wODIgMjI4LjA2NS0xODQuOTM3IDQxMi45MjctNDEyLjk5MSA0MTMuMDIwaC0wLjAwOXpNNTEyLjAyMCAxMTcuNTk2Yy0xODIuNDc3IDAtMzMwLjQwNCAxNDcuOTI3LTMzMC40MDQgMzMwLjQwNHMxNDcuOTI3IDMzMC40MDQgMzMwLjQwNCAzMzAuNDA0YzE4Mi40NzcgMCAzMzAuNDA0LTE0Ny45MjcgMzMwLjQwNC0zMzAuNDA0djBjLTAuMjU2LTE4Mi4zNzQtMTQ4LjAzMC0zMzAuMTQ4LTMzMC4zOC0zMzAuNDA0aC0wLjAyNHpNNDcwLjcxMiAyODIuODA4aDgyLjU5NnYtODIuNTk2aC04Mi41OTZ6TTUzNy4yNzIgNjk0LjE3Yy03LjQ2OSAxLjE5Ni0xNi4wODAgMS44NzktMjQuODUgMS44NzktNzQuMTAyIDAtMTM2LjgxNS00OC43NjItMTU3LjgwMy0xMTUuOTQ5bC0wLjMxNS0xLjE3MWMtMS4wMjAtMy4yNDgtMS42MDctNi45ODMtMS42MDctMTAuODU1IDAtMjAuNjg3IDE2Ljc3LTM3LjQ1OCAzNy40NTgtMzcuNDU4IDAuMDMyIDAgMC4wNjQgMCAwLjA5NyAwaDguMTg3YzE3LjA1NiAwLjY0IDMxLjMxMyAxMS45MzEgMzYuMzU1IDI3LjM4N2wwLjA3OSAwLjI4MWMxMS44MTggMzIuMTUgNDIuMTc0IDU0LjY3IDc3Ljc4OSA1NC42NyA2LjA2MSAwIDExLjk3LTAuNjUyIDE3LjY2MS0xLjg5bC0wLjU0NiAwLjFjMzcuNTAxLTguNzU2IDY1LjAwNy00MS45MDIgNjUuMDA3LTgxLjQ3MyAwLTEuODU4LTAuMDYxLTMuNzAxLTAuMTgtNS41MjlsMC4wMTMgMC4yNDljLTQuMDk2LTU1LjI5Ni02Ni45MDgtNjcuMzE4LTEwMS4xOTItMTE4Ljk0OCAwLTAuNDEtMC40MS0wLjQxLTAuNDEtMC44MTktMC40MS0wLjgxOS0wLjgxOS0xLjI0OS0xLjI0OS0yLjA0OC0zLjYxLTUuODQzLTcuMDQ3LTEyLjYzNS05LjkxLTE5LjcyMWwtMC4zMy0wLjkyM2MtMC40MS0xLjI0OS0xLjIyOS0yLjA0OC0xLjY1OS0zLjI5Ny0wLjI3Ny0wLjc1Ny0wLjU1OS0xLjcyMy0wLjc4NS0yLjcxMWwtMC4wMzQtMC4xNzdjLTUuMjAxLTE0Ljc3LTguMjA2LTMxLjgwMS04LjIwNi00OS41MzQgMC0wLjczNyAwLjAwNS0xLjQ3MyAwLjAxNi0yLjIwN2wtMC4wMDEgMC4xMTFoODIuNTk2Yy0wLjAwMSAwLjE5MS0wLjAwMiAwLjQxNy0wLjAwMiAwLjY0MiAwIDE2LjAyNCA0LjI5NiAzMS4wNDUgMTEuNzk5IDQzLjk3NGwtMC4yMjUtMC40MmMwLjgxOSAxLjIyOSAxLjIyOSAyLjQ3OCAyLjA0OCAzLjcyNyAzLjY0MyA2LjA5MyA3LjQ2NCAxMS4zNjEgMTEuNjk1IDE2LjI2NGwtMC4xMjQtMC4xNDdjMC40MSAwLjQxIDAuODE5IDEuMjI5IDEuMjQ5IDEuNjU5IDQuMzA3IDUuMDcwIDguNzU5IDkuNjU4IDEzLjQ5MyAxMy45MzdsMC4xMjYgMC4xMTJjMzkuNTA2IDM3LjUxOSA5My4yNjYgNjguMDE0IDgyLjA2MyAxNDYuOTY0LTEwLjE0OCA3My4wODMtNjUuOTk2IDEzMC42MjQtMTM3LjM1IDE0My4yMTJsLTEuMDEzIDAuMTQ4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5MTU7IiBnbHlwaC1uYW1lPSJpbmZvIiBkPSJNNTEyIDk2MGMtMjgyLjI0MiAwLTUxMi0yMjkuNzU4LTUxMi01MTJzMjI5Ljc1OC01MTIgNTEyLTUxMmMyODIuMjQyIDAgNTEyIDIyOS43NTggNTEyIDUxMnMtMjI5Ljc1OCA1MTItNTEyIDUxMnpNNTEyIDg3MC45NTdjMjM0LjEyIDAgNDIyLjk1Ny0xODguODM3IDQyMi45NTctNDIyLjk1N3MtMTg4LjgzNy00MjIuOTU3LTQyMi45NTctNDIyLjk1N2MtMjM0LjEyIDAtNDIyLjk1NyAxODguODM3LTQyMi45NTcgNDIyLjk1N3MxODguODM3IDQyMi45NTcgNDIyLjk1NyA0MjIuOTU3ek01MTIgNjg4LjQzNWMtMC4wMDUgMC0wLjAxMSAwLTAuMDE3IDAtMjguMjc3IDAtNTEuMi0yMi45MjMtNTEuMi01MS4yIDAtMC4wMDYgMC0wLjAxMiAwLTAuMDE4djAuMDAxLTIyLjI2MWMwLTAuMDA1IDAtMC4wMTEgMC0wLjAxNyAwLTI4LjI3NyAyMi45MjMtNTEuMiA1MS4yLTUxLjIgMC4wMDYgMCAwLjAxMiAwIDAuMDE4IDBoLTAuMDAxYzAuMDA1IDAgMC4wMTEgMCAwLjAxNyAwIDI4LjI3NyAwIDUxLjIgMjIuOTIzIDUxLjIgNTEuMiAwIDAuMDA2IDAgMC4wMTIgMCAwLjAxOHYtMC4wMDEgMjIuMjYxYzAgMC4wMDUgMCAwLjAxMSAwIDAuMDE3IDAgMjguMjc3LTIyLjkyMyA1MS4yLTUxLjIgNTEuMi0wLjAwNiAwLTAuMDEyIDAtMC4wMTggMGgwLjAwMXpNNTEyIDQ4OC4wODdjLTAuMDA1IDAtMC4wMTEgMC0wLjAxNyAwLTI4LjI3NyAwLTUxLjItMjIuOTIzLTUxLjItNTEuMiAwLTAuMDA2IDAtMC4wMTIgMC0wLjAxOHYwLjAwMS0xNzguMDg3YzAtMC4wMDUgMC0wLjAxMSAwLTAuMDE3IDAtMjguMjc3IDIyLjkyMy01MS4yIDUxLjItNTEuMiAwLjAwNiAwIDAuMDEyIDAgMC4wMTggMGgtMC4wMDFjMC4wMDUgMCAwLjAxMSAwIDAuMDE3IDAgMjguMjc3IDAgNTEuMiAyMi45MjMgNTEuMiA1MS4yIDAgMC4wMDYgMCAwLjAxMiAwIDAuMDE4di0wLjAwMSAxNzguMDg3YzAgMC4wMDUgMCAwLjAxMSAwIDAuMDE3IDAgMjguMjc3LTIyLjkyMyA1MS4yLTUxLjIgNTEuMi0wLjAwNiAwLTAuMDEyIDAtMC4wMTggMGgwLjAwMXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTE2OyIgZ2x5cGgtbmFtZT0iaW52aXNpYmxlIiBkPSJNNTEyIDY4Mi42OGMwLjc5MSAwLjAxMSAxLjcyNCAwLjAxNyAyLjY1OSAwLjAxNyAxMTYuMzY1IDAgMjEwLjY5OC05NC4zMzMgMjEwLjY5OC0yMTAuNjk4IDAtMjMuMjEtMy43NTMtNDUuNTQzLTEwLjY4NS02Ni40MjZsMC40MjggMS40ODggMTMwLjU2LTEzMC41NmM1OC43NTggNTEuOTI4IDEwNC45OCAxMTYuNjUgMTM0LjQ3NiAxODkuOTA2bDEuMjA0IDMuMzg0Yy03Ni4wMTQgMTg4Ljc2Ni0yNTcuNjI4IDMxOS41ODEtNDY5Ljc5NSAzMTkuNTgxLTU1LjMzNCAwLTEwOC41ODktOC44OTgtMTU4LjQxNC0yNS4zNDFsMy41NjkgMS4wMjAgOTIuNTktOTIuNTljMTguNjgxIDYuMTQyIDQwLjIwNCA5Ljg1OSA2Mi41NDEgMTAuMjM3bDAuMTg5IDAuMDAzek0xMTUuNjEgODI1LjE4Yy03LjcwNi03LjY5My0xMi40NzItMTguMzI3LTEyLjQ3Mi0zMC4wNzVzNC43NjctMjIuMzgyIDEyLjQ3Mi0zMC4wNzRsODMuOTY5LTgzLjk2OWMtNjkuMDAzLTU1LjAzMC0xMjIuNzM2LTEyNi4zNzctMTU1LjcwNS0yMDguMzExbC0xLjIxMi0zLjQxMWM3NS43MTktMTg4Ljg4NCAyNTcuMjE2LTMxOS44NzYgNDY5LjMyNC0zMjBoMC4wMTZjNjYuMjQ4IDAuMTQ4IDEyOS40NTggMTIuOTc4IDE4Ny4zODggMzYuMTg4bC0zLjQxNi0xLjIwOCAxMTYuMDYwLTExNi4wNjBjNy41MzktNi45MTYgMTcuNjMyLTExLjE1NSAyOC43MTUtMTEuMTU1IDIzLjQ5MyAwIDQyLjUzNyAxOS4wNDQgNDIuNTM3IDQyLjUzNyAwIDExLjA5OC00LjI1IDIxLjIwNC0xMS4yMTIgMjguNzc4bDAuMDI4LTAuMDMxLTY5NS44OSA2OTYuNzkxYy03Ljc3MiA3LjcxNy0xOC40NzkgMTIuNDg2LTMwLjMgMTIuNDg2cy0yMi41MjgtNC43NjktMzAuMzAzLTEyLjQ4OWwwLjAwMyAwLjAwMnpNNTEyIDI1NmMtMTE3LjgxIDAuMDM1LTIxMy4zMDUgOTUuNTMtMjEzLjM0IDIxMy4zMzd2MC4wMDNjMCAwLjAxNyAwIDAuMDM2IDAgMC4wNTYgMCAzMy4xOTIgNy43MTggNjQuNTgyIDIxLjQ1NyA5Mi40NzNsLTAuNTQ3LTEuMjI5IDY2Ljk5LTY2Ljk5Yy0xLjQ0NS03LjIwOS0yLjM2OC0xNS41ODctMi41NTctMjQuMTQ2bC0wLjAwMy0wLjE2M2MwLTAuMDQ5IDAtMC4xMDYgMC0wLjE2NCAwLTcwLjYwMiA1Ny4yMzQtMTI3LjgzNiAxMjcuODM2LTEyNy44MzYgMC4wNTggMCAwLjExNSAwIDAuMTczIDBoLTAuMDA5YzguNjk2IDAuMTM4IDE3LjA2OSAxLjIyMSAyNS4xMTMgMy4xNDhsLTAuNzgzLTAuMTU4IDY2Ljk5LTY2Ljk5Yy0yNi41NzgtMTMuNDU4LTU3Ljk0My0yMS4zNC05MS4xNS0yMS4zNC0wLjA2MCAwLTAuMTIgMC0wLjE4IDBoMC4wMDl6TTYzOC43MyA0ODMuMzI4Yy02LjQ3NyA1OS40MjEtNTMuMjE5IDEwNi4xNjMtMTEyLjA3NSAxMTIuNTlsLTAuNTY1IDAuMDUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5MTc7IiBnbHlwaC1uYW1lPSJtZW51IiBkPSJNMTYzLjg0IDIwMi4yNGg2NTUuMzZjMjIuNjIyIDAgNDAuOTYgMTguMzM4IDQwLjk2IDQwLjk2cy0xOC4zMzggNDAuOTYtNDAuOTYgNDAuOTZ2MGgtNjU1LjM2Yy0yMi42MjIgMC00MC45Ni0xOC4zMzgtNDAuOTYtNDAuOTZzMTguMzM4LTQwLjk2IDQwLjk2LTQwLjk2djB6TTE2My44NCA0MDcuMDQwaDY1NS4zNmMyMi42MjIgMCA0MC45NiAxOC4zMzggNDAuOTYgNDAuOTZzLTE4LjMzOCA0MC45Ni00MC45NiA0MC45NnYwaC02NTUuMzZjLTIyLjYyMiAwLTQwLjk2LTE4LjMzOC00MC45Ni00MC45NnMxOC4zMzgtNDAuOTYgNDAuOTYtNDAuOTZ2MHpNMTIyLjg4IDY1Mi44YzAuMDcwLTIyLjU5NCAxOC4zNjYtNDAuODkgNDAuOTUzLTQwLjk2aDY1NS4zNjdjMjIuNjIyIDAgNDAuOTYgMTguMzM4IDQwLjk2IDQwLjk2cy0xOC4zMzggNDAuOTYtNDAuOTYgNDAuOTZ2MGgtNjU1LjM2Yy0yMi41OTQtMC4wNzAtNDAuODktMTguMzY2LTQwLjk2LTQwLjk1M3YtMC4wMDd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkxODsiIGdseXBoLW5hbWU9Im1vcmVfaCIgZD0iTTEyOCA1NzZjLTcwLjY5MiAwLTEyOC01Ny4zMDgtMTI4LTEyOHM1Ny4zMDgtMTI4IDEyOC0xMjhjNzAuNjkyIDAgMTI4IDU3LjMwOCAxMjggMTI4djBjLTAuMjA1IDcwLjYxLTU3LjM5IDEyNy43OTUtMTI3Ljk4IDEyOGgtMC4wMjB6TTg5NiA1NzZjLTcwLjY5MiAwLTEyOC01Ny4zMDgtMTI4LTEyOHM1Ny4zMDgtMTI4IDEyOC0xMjhjNzAuNjkyIDAgMTI4IDU3LjMwOCAxMjggMTI4djBjLTAuMjA1IDcwLjYxLTU3LjM5IDEyNy43OTUtMTI3Ljk4IDEyOGgtMC4wMjB6TTUxMiA1NzZjLTcwLjY5MiAwLTEyOC01Ny4zMDgtMTI4LTEyOHM1Ny4zMDgtMTI4IDEyOC0xMjhjNzAuNjkyIDAgMTI4IDU3LjMwOCAxMjggMTI4djBjLTAuMjA1IDcwLjYxLTU3LjM5IDEyNy43OTUtMTI3Ljk4IDEyOGgtMC4wMjB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkxOTsiIGdseXBoLW5hbWU9Im1vcmVfdiIgZD0iTTUxMiA3MDRjNzAuNjkyIDAgMTI4IDU3LjMwOCAxMjggMTI4cy01Ny4zMDggMTI4LTEyOCAxMjhjLTcwLjY5MiAwLTEyOC01Ny4zMDgtMTI4LTEyOHYwYzAuMjA1LTcwLjYxIDU3LjM5LTEyNy43OTUgMTI3Ljk4LTEyOGgwLjAyMHpNNTEyIDU3NmMtNzAuNjkyIDAtMTI4LTU3LjMwOC0xMjgtMTI4czU3LjMwOC0xMjggMTI4LTEyOGM3MC42OTIgMCAxMjggNTcuMzA4IDEyOCAxMjh2MGMtMC4yMDUgNzAuNjEtNTcuMzkgMTI3Ljc5NS0xMjcuOTggMTI4aC0wLjAyMHpNNTEyIDE5MmMtNzAuNjkyIDAtMTI4LTU3LjMwOC0xMjgtMTI4czU3LjMwOC0xMjggMTI4LTEyOGM3MC42OTIgMCAxMjggNTcuMzA4IDEyOCAxMjh2MGMtMC4yMDUgNzAuNjEtNTcuMzkgMTI3Ljc5NS0xMjcuOTggMTI4aC0wLjAyMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTFhOyIgZ2x5cGgtbmFtZT0icGRmIiBkPSJNODUzLjMyIDg3NC42NmgtNTEyYy00Ny4wNzYtMC4xMzktODUuMjAxLTM4LjI2NC04NS4zNC04NS4zMjd2LTUxMi4wMTNjMC4xNTEtNDcuMDY3IDM4LjI3MS04NS4xOCA4NS4zMjctODUuMzJoNTEyLjAxM2M0Ny4wNzYgMC4xMzkgODUuMjAxIDM4LjI2NCA4NS4zNCA4NS4zMjd2NTEyLjAxM2MtMC4xNTEgNDcuMDY3LTM4LjI3MSA4NS4xOC04NS4zMjcgODUuMzJoLTAuMDEzek00OTAuNjYgNTU0LjY2YzAtMC4wMjQgMC0wLjA1MyAwLTAuMDgyIDAtMzUuMzAxLTI4LjYxNy02My45MTgtNjMuOTE4LTYzLjkxOC0wLjAyOSAwLTAuMDU4IDAtMC4wODYgMGgtNDIuNjc1di01My4yNDhjLTAuNDUyLTE3LjMyNy0xNC42MDYtMzEuMjAxLTMyLTMxLjIwMXMtMzEuNTQ4IDEzLjg3NC0zMS45OTkgMzEuMTU5bC0wLjAwMSAwLjA0MnYxODEuMjQ4YzAuMDcwIDIzLjUzMiAxOS4xMjcgNDIuNTkgNDIuNjUzIDQyLjY2aDY0LjAwN2MwLjAyNCAwIDAuMDUzIDAgMC4wODIgMCAzNS4zMDEgMCA2My45MTgtMjguNjE3IDYzLjkxOC02My45MTggMC0wLjAyOSAwLTAuMDU4IDAtMC4wODZ2MC4wMDV6TTcwNCA0NjkuMzJjMC0wLjAyNCAwLTAuMDUzIDAtMC4wODIgMC0zNS4zMDEtMjguNjE3LTYzLjkxOC02My45MTgtNjMuOTE4LTAuMDI5IDAtMC4wNTggMC0wLjA4NiAwaC04NS4zMzVjLTAuMDYxLTAuMDAxLTAuMTMzLTAuMDAxLTAuMjA2LTAuMDAxLTExLjY3MyAwLTIxLjEzNSA5LjQ2My0yMS4xMzUgMjEuMTM1IDAgMC4wNzIgMCAwLjE0NSAwLjAwMSAwLjIxN3YtMC4wMTEgMjEzLjM0Yy0wLjAwMSAwLjA2MS0wLjAwMSAwLjEzMy0wLjAwMSAwLjIwNiAwIDExLjY3MyA5LjQ2MyAyMS4xMzUgMjEuMTM1IDIxLjEzNSAwLjA3MiAwIDAuMTQ1IDAgMC4yMTctMC4wMDFoODUuMzI5YzAuMDI0IDAgMC4wNTMgMCAwLjA4MiAwIDM1LjMwMSAwIDYzLjkxOC0yOC42MTcgNjMuOTE4LTYzLjkxOCAwLTAuMDI5IDAtMC4wNTggMC0wLjA4NnYwLjAwNXpNODc0LjY2IDYyOS4zM2MtMC4xMjctMTcuNjItMTQuMzcxLTMxLjg3Mi0zMS45NzctMzIuMDEwaC0zMi4wMjN2LTQyLjY2aDMyLjAxMGMxNy4zMjctMC40NTIgMzEuMjAxLTE0LjYwNiAzMS4yMDEtMzJzLTEzLjg3NC0zMS41NDgtMzEuMTU5LTMxLjk5OWwtMC4wNDItMC4wMDFoLTMyLjAxMHYtNTMuMjQ4Yy0wLjQ1Mi0xNy4zMjctMTQuNjA2LTMxLjIwMS0zMi0zMS4yMDFzLTMxLjU0OCAxMy44NzQtMzEuOTk5IDMxLjE1OWwtMC4wMDEgMC4wNDJ2MTgxLjI0OGMwLjA3MCAyMy41MzIgMTkuMTI3IDQyLjU5IDQyLjY1MyA0Mi42Nmg1My4yNTVjMTcuNjU2LTAuMDgwIDMxLjk1My0xNC4zNDIgMzIuMDkyLTMxLjk3N3YtMC4wMTN6TTM4My45OCA1NTQuNjZoNDIuNjZ2NDIuNjZoLTQyLjY2ek0xMjcuOTggNzA0Yy0yMy41MzktMC4wNzAtNDIuNjAyLTE5LjEzOS00Mi42Ni00Mi42NzV2LTU1NC42NjZjMC4xMzktNDcuMDc2IDM4LjI2NC04NS4yMDEgODUuMzI3LTg1LjM0aDU1NC42NzNjMjMuNTY2IDAgNDIuNjcgMTkuMTA0IDQyLjY3IDQyLjY3cy0xOS4xMDQgNDIuNjctNDIuNjcgNDIuNjdoLTUxMmMtMjMuNTMyIDAuMDcwLTQyLjU5IDE5LjEyNy00Mi42NiA0Mi42NTN2NTEyLjAwN2MtMC4wNTggMjMuNTQ4LTE5LjEzMiA0Mi42MjItNDIuNjc1IDQyLjY4aC0wLjAwNnpNNTk3LjMyIDQ2OS4zMmg0Mi42NnYxMjhoLTQyLjY2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5MWI7IiBnbHlwaC1uYW1lPSJwaG90b19saWJyYXJ5IiBkPSJNOTM4LjY2IDI3Ny4zMnY1MTJjLTAuMTM5IDQ3LjA3Ni0zOC4yNjQgODUuMjAxLTg1LjMyNyA4NS4zNGgtNTEyLjAxM2MtNDcuMDc2LTAuMTM5LTg1LjIwMS0zOC4yNjQtODUuMzQtODUuMzI3di01MTIuMDEzYzAuMTUxLTQ3LjA2NyAzOC4yNzEtODUuMTggODUuMzI3LTg1LjMyaDUxMi4wMTNjNDcuMDY5IDAuMTM5IDg1LjE4OSAzOC4yNTMgODUuMzQgODUuMzA1djAuMDE0ek00ODYuMzggNDI1LjM3bDY5LjYzMi05My4wMjAgMTEwLjA4MCAxMzcuMzhjMy45MzYgNC44OTcgOS45MjUgOC4wMDQgMTYuNjQgOC4wMDRzMTIuNzA0LTMuMTA3IDE2LjYwOC03Ljk2MmwwLjAzMi0wLjA0MSAxMjYuMy0xNTcuODZjMi45MTgtMy42MDkgNC42ODQtOC4yNTQgNC42ODQtMTMuMzEyIDAtMTEuNzQxLTkuNTE4LTIxLjI1OC0yMS4yNTgtMjEuMjU4LTAuMDIwIDAtMC4wMzkgMC0wLjA1OSAwaC00MjUuMDU5Yy0wLjAxMiAwLTAuMDI3IDAtMC4wNDEgMC0xMS43NzUgMC0yMS4zMiA5LjU0NS0yMS4zMiAyMS4zMiAwIDQuODQ1IDEuNjE2IDkuMzEzIDQuMzM5IDEyLjg5M2wtMC4wMzgtMC4wNTIgODUuMzQgMTEzLjkxYzQuMDAzIDUuMDg2IDEwLjE1OCA4LjMyMiAxNy4wNzAgOC4zMjJzMTMuMDY3LTMuMjM2IDE3LjAzNS04LjI3NmwwLjAzNS0wLjA0NnpNODUuMzIgNjYxLjMydi01NTQuNjZjMC4xMzktNDcuMDc2IDM4LjI2NC04NS4yMDEgODUuMzI3LTg1LjM0aDU1NC42NzNjMjMuNTY2IDAgNDIuNjcgMTkuMTA0IDQyLjY3IDQyLjY3cy0xOS4xMDQgNDIuNjctNDIuNjcgNDIuNjdoLTUxMmMtMjMuNTMyIDAuMDcwLTQyLjU5IDE5LjEyNy00Mi42NiA0Mi42NTN2NTEyLjAwN2MwIDIzLjU2Ni0xOS4xMDQgNDIuNjctNDIuNjcgNDIuNjdzLTQyLjY3LTE5LjEwNC00Mi42Ny00Mi42N3YweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5MWM7IiBnbHlwaC1uYW1lPSJwaG90byIgZD0iTTg5NiAxNDkuMzR2NTk3LjMyYy0wLjEzOSA0Ny4wNzYtMzguMjY0IDg1LjIwMS04NS4zMjcgODUuMzRoLTU5Ny4zMzNjLTQ3LjA3Ni0wLjEzOS04NS4yMDEtMzguMjY0LTg1LjM0LTg1LjMyN3YtNTk3LjMzM2MwLjEzOS00Ny4wNzYgMzguMjY0LTg1LjIwMSA4NS4zMjctODUuMzRoNTk3LjMzM2M0Ny4wNzYgMC4xMzkgODUuMjAxIDM4LjI2NCA4NS4zNCA4NS4zMjd2MC4wMTN6TTM3OS43NCAzNjMuNTJsODkuNi0xMDcuOTUgMTMyLjI2IDE3MC4yM2MzLjk1NyA1LjA1MSAxMC4wNTYgOC4yNjcgMTYuOTA3IDguMjY3IDcuMDQxIDAgMTMuMjg4LTMuMzk2IDE3LjE5My04LjY0bDAuMDQwLTAuMDU3IDE0OS42NjgtMTk5LjU3OGMyLjY3NS0zLjUyNCA0LjI4NS03Ljk4NCA0LjI4NS0xMi44MiAwLTExLjc3NS05LjU0NS0yMS4zMi0yMS4zMi0yMS4zMi0wLjAwOSAwLTAuMDE4IDAtMC4wMjcgMGgtNTExLjQ4N2MtMC4wMTIgMC0wLjAyNSAwLTAuMDM5IDAtMTEuNzQxIDAtMjEuMjU4IDkuNTE4LTIxLjI1OCAyMS4yNTggMCA1LjA0OCAxLjc2IDkuNjg2IDQuNjk5IDEzLjMzMmwtMC4wMzItMC4wNDEgMTA2LjIzIDEzNi41NGMzLjg3NyA1LjIxMyAxMC4wMTkgOC41NTQgMTYuOTQxIDguNTU0IDYuNTc2IDAgMTIuNDQ4LTMuMDE1IDE2LjMwOS03LjczOGwwLjAzMC0wLjAzOHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTFkOyIgZ2x5cGgtbmFtZT0icHJpbnQiIGQ9Ik04MTAuNjYgNjE4LjY2aC01OTcuMzRjLTAuMDQ5IDAtMC4xMDYgMC0wLjE2NCAwLTcwLjYwMiAwLTEyNy44MzYtNTcuMjM0LTEyNy44MzYtMTI3LjgzNiAwLTAuMDU4IDAtMC4xMTUgMC0wLjE3M3YwLjAwOS0xNzAuNjZjMC4xMzktNDcuMDc2IDM4LjI2NC04NS4yMDEgODUuMzI3LTg1LjM0aDg1LjM1M3YtODUuMzRjMC4xNTEtNDcuMDYwIDM4LjI2LTg1LjE2OSA4NS4zMDUtODUuMzJoMzQxLjM1NGM0Ny4wNzYgMC4xMzkgODUuMjAxIDM4LjI2NCA4NS4zNCA4NS4zMjd2ODUuMzMzaDg1LjMyYzQ3LjA3NiAwLjEzOSA4NS4yMDEgMzguMjY0IDg1LjM0IDg1LjMyN3YxNzAuNjczYzAgMC4wNDkgMCAwLjEwNiAwIDAuMTY0IDAgNzAuNjAyLTU3LjIzNCAxMjcuODM2LTEyNy44MzYgMTI3LjgzNi0wLjA1OCAwLTAuMTE1IDAtMC4xNzMgMGgwLjAwOXpNNjM5Ljk4IDE0OS4zNGgtMjU2Yy0yMy41MzIgMC4wNzAtNDIuNTkgMTkuMTI3LTQyLjY2IDQyLjY1M3YxNzAuNjY3aDM0MS4zNHYtMTcwLjY2Yy0wLjA3MC0yMy41MzktMTkuMTM5LTQyLjYwMi00Mi42NzUtNDIuNjZoLTAuMDA2ek04MTAuNjYgNDQ4Yy0yMy41NiAwLTQyLjY2IDE5LjA5OS00Mi42NiA0Mi42NnMxOS4wOTkgNDIuNjYgNDIuNjYgNDIuNjZjMjMuNTYgMCA0Mi42Ni0xOS4wOTkgNDIuNjYtNDIuNjZ2MGMtMC4wNzAtMjMuNTMyLTE5LjEyNy00Mi41OS00Mi42NTMtNDIuNjZoLTAuMDA3ek03MjUuMzIgODMyaC00MjYuNjZjLTIzLjUzMi0wLjA3MC00Mi41OS0xOS4xMjctNDIuNjYtNDIuNjUzdi04NS4zNDdjMC4wNzAtMjMuNTMyIDE5LjEyNy00Mi41OSA0Mi42NTMtNDIuNjZoNDI2LjY2N2MyMy41MzIgMC4wNzAgNDIuNTkgMTkuMTI3IDQyLjY2IDQyLjY1M3Y4NS4zNDdjLTAuMDcwIDIzLjUzMi0xOS4xMjcgNDIuNTktNDIuNjUzIDQyLjY2aC0wLjAwN3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTFlOyIgZ2x5cGgtbmFtZT0icmFkaW9fY2hlY2tlZCIgZD0iTTUxMiA4NzAuNjY2Yy0yMzMuNDEyLTAuMDEyLTQyMi42MjUtMTg5LjIzMi00MjIuNjI1LTQyMi42NDYgMC0yMzMuNDIxIDE4OS4yMjUtNDIyLjY0NiA0MjIuNjQ2LTQyMi42NDZzNDIyLjY0NiAxODkuMjI1IDQyMi42NDYgNDIyLjY0NnYwYy0wLjA5MyAyMzMuMzkxLTE4OS4yNzQgNDIyLjU2NC00MjIuNjU5IDQyMi42NDZoLTAuMDA4ek01MTIgMTA5Ljg5NmMtMTg2Ljc0MSAwLTMzOC4xMjUgMTUxLjM4NC0zMzguMTI1IDMzOC4xMjVzMTUxLjM4NCAzMzguMTI1IDMzOC4xMjUgMzM4LjEyNWMxODYuNzQxIDAgMzM4LjEyNS0xNTEuMzg0IDMzOC4xMjUtMzM4LjEyNXYwYzAtMC4wMzAgMC0wLjA2NiAwLTAuMTAyIDAtMTg2LjY4NS0xNTEuMzM4LTMzOC4wMjItMzM4LjAyMi0zMzguMDIyLTAuMDM2IDAtMC4wNzIgMC0wLjEwOCAwaDAuMDA1ek03NDMuNjkgNDQ4YzAtMTI0LjQxOS0xMDAuODYxLTIyNS4yOC0yMjUuMjgtMjI1LjI4cy0yMjUuMjggMTAwLjg2MS0yMjUuMjggMjI1LjI4YzAgMTI0LjQxOSAxMDAuODYxIDIyNS4yOCAyMjUuMjggMjI1LjI4czIyNS4yOC0xMDAuODYxIDIyNS4yOC0yMjUuMjh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkxZjsiIGdseXBoLW5hbWU9InJhZGlvIiBkPSJNNTEyIDg3MC42NjZjLTIzMy40MTItMC4wMTItNDIyLjYyNS0xODkuMjMyLTQyMi42MjUtNDIyLjY0NiAwLTIzMy40MjEgMTg5LjIyNS00MjIuNjQ2IDQyMi42NDYtNDIyLjY0NnM0MjIuNjQ2IDE4OS4yMjUgNDIyLjY0NiA0MjIuNjQ2djBjLTAuMDkzIDIzMy4zOTEtMTg5LjI3NCA0MjIuNTY0LTQyMi42NTkgNDIyLjY0NmgtMC4wMDh6TTUxMiAxMDkuODk2Yy0xODYuNzQxIDAtMzM4LjEyNSAxNTEuMzg0LTMzOC4xMjUgMzM4LjEyNXMxNTEuMzg0IDMzOC4xMjUgMzM4LjEyNSAzMzguMTI1YzE4Ni43NDEgMCAzMzguMTI1LTE1MS4zODQgMzM4LjEyNS0zMzguMTI1djBjMC0wLjAzMCAwLTAuMDY2IDAtMC4xMDIgMC0xODYuNjg1LTE1MS4zMzgtMzM4LjAyMi0zMzguMDIyLTMzOC4wMjItMC4wMzYgMC0wLjA3MiAwLTAuMTA4IDBoMC4wMDV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkyMDsiIGdseXBoLW5hbWU9InJlbW92ZSIgZD0iTTc2OCA0MDUuMzMzaC01MTJjLTIzLjU2NCAwLTQyLjY2NyAxOS4xMDMtNDIuNjY3IDQyLjY2N3MxOS4xMDMgNDIuNjY3IDQyLjY2NyA0Mi42Njd2MGg1MTJjMjMuNTY0IDAgNDIuNjY3LTE5LjEwMyA0Mi42NjctNDIuNjY3cy0xOS4xMDMtNDIuNjY3LTQyLjY2Ny00Mi42Njd2MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTIxOyIgZ2x5cGgtbmFtZT0icnBsdXMiIGQ9Ik01MTIgNjgzLjUyYy0yNS45ODItMC4wODEtNDcuMDIzLTIxLjEyMi00Ny4xMDQtNDcuMDk2di0xNDEuMzJoLTE0MS4zMTJjLTI2LjAxNSAwLTQ3LjEwNC0yMS4wODktNDcuMTA0LTQ3LjEwNHMyMS4wODktNDcuMTA0IDQ3LjEwNC00Ny4xMDR2MGgxNDEuMzEydi0xNDEuMzEyYzAtMjYuMDE1IDIxLjA4OS00Ny4xMDQgNDcuMTA0LTQ3LjEwNHM0Ny4xMDQgMjEuMDg5IDQ3LjEwNCA0Ny4xMDR2MCAxNDEuMzEyaDE0MS4zMTJjMjYuMDE1IDAgNDcuMTA0IDIxLjA4OSA0Ny4xMDQgNDcuMTA0cy0yMS4wODkgNDcuMTA0LTQ3LjEwNCA0Ny4xMDR2MGgtMTQxLjMxMnYxNDEuMzEyYy0wLjA4MSAyNS45ODItMjEuMTIyIDQ3LjAyMy00Ny4wOTYgNDcuMTA0aC0wLjAwOHpNNTEyIDkxOS4wNDBjLTI2MC4xNDggMC00NzEuMDQwLTIxMC44OTItNDcxLjA0MC00NzEuMDQwczIxMC44OTItNDcxLjA0MCA0NzEuMDQwLTQ3MS4wNDBjMjYwLjE0OCAwIDQ3MS4wNDAgMjEwLjg5MiA0NzEuMDQwIDQ3MS4wNDB2MGMtMC40NDIgMjU5Ljk3LTIxMS4wNjkgNDcwLjU5Ny00NzAuOTk3IDQ3MS4wNDBoLTAuMDQzek01MTIgNzEuMTY4Yy0yMDguMTE5IDAtMzc2LjgzMiAxNjguNzEzLTM3Ni44MzIgMzc2LjgzMnMxNjguNzEzIDM3Ni44MzIgMzc2LjgzMiAzNzYuODMyYzIwOC4xMTkgMCAzNzYuODMyLTE2OC43MTMgMzc2LjgzMi0zNzYuODMydjBjLTAuMjgtMjA4LjAwNi0xNjguODI2LTM3Ni41NTItMzc2LjgwNS0zNzYuODMyaC0wLjAyN3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTIyOyIgZ2x5cGgtbmFtZT0ic2F2ZSIgZD0iTTgxMC42NiA0MDUuMzR2LTIxMy4zNGMtMC4wNzAtMjMuNTMyLTE5LjEyNy00Mi41OS00Mi42NTMtNDIuNjZoLTUxMi4wMDdjLTIzLjUzMiAwLjA3MC00Mi41OSAxOS4xMjctNDIuNjYgNDIuNjUzdjIxMy4zNDdjMCAyMy41NjYtMTkuMTA0IDQyLjY3LTQyLjY3IDQyLjY3cy00Mi42Ny0xOS4xMDQtNDIuNjctNDIuNjd2MC0yNTZjMC4xMzktNDcuMDc2IDM4LjI2NC04NS4yMDEgODUuMzI3LTg1LjM0aDU5Ny4zMzNjNDcuMDc2IDAuMTM5IDg1LjIwMSAzOC4yNjQgODUuMzQgODUuMzI3djI1Ni4wMTNjMCAyMy41NjYtMTkuMTA0IDQyLjY3LTQyLjY3IDQyLjY3cy00Mi42Ny0xOS4xMDQtNDIuNjctNDIuNjd2MHpNNTU0LjY2IDQxOS40M2w4MC4yMiA4MC4yMmM3LjY5OSA3LjcwMSAxOC4zMzYgMTIuNDY1IDMwLjA4NSAxMi40NjUgMjMuNDk0IDAgNDIuNTQtMTkuMDQ2IDQyLjU0LTQyLjU0IDAtMTEuNzQ0LTQuNzU5LTIyLjM3Ny0xMi40NTUtMzAuMDc1bC0xNTMuMTctMTUzLjE3Yy03LjY5NC03LjcxMi0xOC4zMzItMTIuNDgzLTMwLjA4NS0xMi40ODNzLTIyLjM5MSA0Ljc3MS0zMC4wODQgMTIuNDgybC0xNTMuMTcxIDE1My4xNzFjLTcuOTY1IDcuNzM5LTEyLjkwNyAxOC41NTItMTIuOTA3IDMwLjUyIDAgMjMuNDkzIDE5LjA0NCA0Mi41MzcgNDIuNTM3IDQyLjUzNyAxMS45NjggMCAyMi43ODEtNC45NDIgMzAuNTEtMTIuODk3bDAuMDEwLTAuMDEwIDgwLjY1LTgwLjIydjM2OS45MWMwIDIzLjU2NiAxOS4xMDQgNDIuNjcgNDIuNjcgNDIuNjdzNDIuNjctMTkuMTA0IDQyLjY3LTQyLjY3djB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkyMzsiIGdseXBoLW5hbWU9InNlYXJjaCIgZD0iTTY2MS4zNCAzNjIuNjhoLTMzLjYyOGwtMTEuOTQgMTEuNTNjNDEuNyA0OC4zNTUgNjcuMDk3IDExMS43OTMgNjcuMDk3IDE4MS4xNjIgMCAxNTMuNjAxLTEyNC41MTggMjc4LjExOC0yNzguMTE4IDI3OC4xMThzLTI3OC4xMTgtMTI0LjUxOC0yNzguMTE4LTI3OC4xMThjMC0xNTMuNjAxIDEyNC41MTgtMjc4LjExOCAyNzguMTE4LTI3OC4xMTggNjkuMzcgMCAxMzIuODA3IDI1LjM5NyAxODEuNTIyIDY3LjRsLTAuMzYtMC4zMDQgMTEuNTMtMTEuOTR2LTMzLjcxbDE4MS4yNDgtMTgxLjQzMmM3LjkzMy03LjE3IDE4LjUtMTEuNTU3IDMwLjA5MS0xMS41NTcgMjQuODI3IDAgNDQuOTU0IDIwLjEyNiA0NC45NTQgNDQuOTU0IDAgMTEuNTkxLTQuMzg3IDIyLjE1OC0xMS41OTIgMzAuMTNsMC4wMzUtMC4wMzl6TTQwNS4zNCAzNjIuNjhjLTEwNi4wMzkgMC0xOTIgODUuOTYxLTE5MiAxOTJzODUuOTYxIDE5MiAxOTIgMTkyYzEwNi4wMzkgMCAxOTItODUuOTYxIDE5Mi0xOTJ2MGMwLTAuMDc5IDAtMC4xNzMgMC0wLjI2NiAwLTEwNS44OTItODUuODQyLTE5MS43MzQtMTkxLjczNC0xOTEuNzM0LTAuMDk0IDAtMC4xODcgMC0wLjI4MSAwaDAuMDE0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5MjQ7IiBnbHlwaC1uYW1lPSJzb3J0IiBkPSJNMTc3LjM5OCAxOTYuNzUxaDE2Ny41MDZjMjIuNzI5IDAuNTE5IDQwLjk1NiAxOS4wNjYgNDAuOTU2IDQxLjg3MXMtMTguMjI3IDQxLjM1My00MC45MDcgNDEuODdsLTAuMDQ4IDAuMDAxaC0xNjcuNTA2Yy0yMi43MjktMC41MTktNDAuOTU2LTE5LjA2Ni00MC45NTYtNDEuODcxczE4LjIyNy00MS4zNTMgNDAuOTA3LTQxLjg3bDAuMDQ4LTAuMDAxek0xMzUuNTE2IDY1Ny4zNjdjMC4wNzAtMjMuMTAzIDE4Ljc3OS00MS44MTIgNDEuODc1LTQxLjg4Mmg2NjkuOTljMjIuNzI5IDAuNTE5IDQwLjk1NiAxOS4wNjYgNDAuOTU2IDQxLjg3MXMtMTguMjI3IDQxLjM1My00MC45MDcgNDEuODdsLTAuMDQ4IDAuMDAxaC02NjkuOTgzYy0yMy4wOTUtMC4wNzAtNDEuOC0xOC43NjctNDEuODgyLTQxLjg1M3YtMC4wMDh6TTE3Ny4zOTggNDA2LjExOGg0MTguNzM0YzIyLjcyOSAwLjUxOSA0MC45NTYgMTkuMDY2IDQwLjk1NiA0MS44NzFzLTE4LjIyNyA0MS4zNTMtNDAuOTA3IDQxLjg3bC0wLjA0OCAwLjAwMWgtNDE4LjczNGMtMjIuNzI5LTAuNTE5LTQwLjk1Ni0xOS4wNjYtNDAuOTU2LTQxLjg3MXMxOC4yMjctNDEuMzUzIDQwLjkwNy00MS44N2wwLjA0OC0wLjAwMXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTI1OyIgZ2x5cGgtbmFtZT0idGV4dCIgZD0iTTYyMi41MSA4NDkuNDljLTE1LjQ5OCAxNS41NDktMzYuOTM2IDI1LjE3LTYwLjYyMSAyNS4xNy0wLjAxNCAwLTAuMDI5IDAtMC4wNDMgMGgtMzA1LjgyNmMtNDcuMDc2LTAuMTM5LTg1LjIwMS0zOC4yNjQtODUuMzQtODUuMzI3di02ODIuNjczYzAtMC4wMzcgMC0wLjA4MCAwLTAuMTIzIDAtNDYuOTU2IDM3Ljk3OC04NS4wNDIgODQuODkzLTg1LjIxN2g1MTIuNDQ3YzQ3LjA2NyAwLjE1MSA4NS4xOCAzOC4yNzEgODUuMzIgODUuMzI3djQ3Ni42MDNjMCAwLjAzNyAwIDAuMDgxIDAgMC4xMjQgMCAyMy41MTMtOS42NjQgNDQuNzY4LTI1LjIzNyA2MC4wMTFsLTAuMDE1IDAuMDE1LTIwNS41NzggMjA2LjA5MHpNNjQwIDE5Mi4wODJoLTI1NmMtMjMuNTY2IDAtNDIuNjcgMTkuMTA0LTQyLjY3IDQyLjY3czE5LjEwNCA0Mi42NyA0Mi42NyA0Mi42N2gyNTZjMjMuNTY2IDAgNDIuNjctMTkuMTA0IDQyLjY3LTQyLjY3cy0xOS4xMDQtNDIuNjctNDIuNjctNDIuNjd2MHpNNjQwIDM2Mi43NDJoLTI1NmMtMjMuNTY2IDAtNDIuNjcgMTkuMTA0LTQyLjY3IDQyLjY3czE5LjEwNCA0Mi42NyA0Mi42NyA0Mi42N2gyNTZjMjMuNTY2IDAgNDIuNjctMTkuMTA0IDQyLjY3LTQyLjY3cy0xOS4xMDQtNDIuNjctNDIuNjctNDIuNjd2MHpNNTU0LjY4IDYxOC42NnYxOTJsMjM0LjY2LTIzNC42NmgtMTkyYy0yMy41MzIgMC4wNzAtNDIuNTkgMTkuMTI3LTQyLjY2IDQyLjY1M3YwLjAwN3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTI2OyIgZ2x5cGgtbmFtZT0idGlja2V0bGlzdCIgZD0iTTEzNS4xNjggMTI0LjQxNmg3NTMuNjY0YzUyLjAzMCAwIDk0LjIwOCA0Mi4xNzggOTQuMjA4IDk0LjIwOHMtNDIuMTc4IDk0LjIwOC05NC4yMDggOTQuMjA4djBoLTc1My42NjRjLTUyLjAzMCAwLTk0LjIwOC00Mi4xNzgtOTQuMjA4LTk0LjIwOHM0Mi4xNzgtOTQuMjA4IDk0LjIwOC05NC4yMDh2MHpNMTM1LjE2OCAyNjUuNzI4aDk0LjIwOHYtOTQuMjA4aC05NC4yMDh6TTQwLjk2IDc4My44NzJjMC4xNjItNTEuOTY0IDQyLjI0NC05NC4wNDYgOTQuMTkyLTk0LjIwOGg3NTMuNjhjNTIuMDMwIDAgOTQuMjA4IDQyLjE3OCA5NC4yMDggOTQuMjA4cy00Mi4xNzggOTQuMjA4LTk0LjIwOCA5NC4yMDh2MGgtNzUzLjY2NGMtNTEuOTY0LTAuMTYyLTk0LjA0Ni00Mi4yNDQtOTQuMjA4LTk0LjE5MnYtMC4wMTZ6TTIyOS4zNzYgNzM2Ljc2OGgtOTQuMjA4djk0LjIwOGg5NC4yMDh6TTEzNS4xNjggNDA3LjA0MGg3NTMuNjY0YzUyLjAzMCAwIDk0LjIwOCA0Mi4xNzggOTQuMjA4IDk0LjIwOHMtNDIuMTc4IDk0LjIwOC05NC4yMDggOTQuMjA4djBoLTc1My42NjRjLTUyLjAzMCAwLTk0LjIwOC00Mi4xNzgtOTQuMjA4LTk0LjIwOHM0Mi4xNzgtOTQuMjA4IDk0LjIwOC05NC4yMDh2MHpNMTM1LjE2OCA1NDguMzUyaDk0LjIwOHYtOTQuMjA4aC05NC4yMDh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkyNzsiIGdseXBoLW5hbWU9InRpbWUiIGQ9Ik01MTEuNTcgODgzLjJjLTI0MC4xNjktMC4yNDUtNDM0Ljc3LTE5NC45OTctNDM0Ljc3LTQzNS4yIDAtMjQwLjM1NCAxOTQuODQ2LTQzNS4yIDQzNS4yLTQzNS4yczQzNS4yIDE5NC44NDYgNDM1LjIgNDM1LjJ2MGMwIDAuMDYxIDAgMC4xMzMgMCAwLjIwNSAwIDI0MC4yNDEtMTk0Ljc1NCA0MzQuOTk1LTQzNC45OTUgNDM0Ljk5NS0wLjIyMyAwLTAuNDQ3IDAtMC42Ny0wLjAwMWgwLjAzNXpNNTEyIDk5Ljg0Yy0xOTIuMjgzIDAtMzQ4LjE2IDE1NS44NzctMzQ4LjE2IDM0OC4xNnMxNTUuODc3IDM0OC4xNiAzNDguMTYgMzQ4LjE2YzE5Mi4yODMgMCAzNDguMTYtMTU1Ljg3NyAzNDguMTYtMzQ4LjE2djBjMC0xOTIuMjgzLTE1NS44NzctMzQ4LjE2LTM0OC4xNi0zNDguMTZ2MHpNNTAyLjQxNSA2NjUuNmgtMi42MjFjLTAuMDM3IDAtMC4wODAgMC0wLjEyMyAwLTE3LjIzOCAwLTMxLjIxMi0xMy45NzQtMzEuMjEyLTMxLjIxMiAwLTAuMDQzIDAtMC4wODcgMC0wLjEzdjAuMDA3LTIwNS40MTRjLTAuMDAxLTAuMDgyLTAuMDAxLTAuMTgtMC4wMDEtMC4yNzcgMC0xNS43NjEgOC40NzgtMjkuNTQxIDIxLjEyMS0zNy4wMzBsMC4xOTktMC4xMDkgMTgwLjYzNC0xMDguMjk4YzQuNjUyLTIuOTE4IDEwLjMwNi00LjY0OSAxNi4zNjUtNC42NDkgMTcuMTkyIDAgMzEuMTMgMTMuOTM3IDMxLjEzIDMxLjEzIDAgMTEuNTI5LTYuMjY3IDIxLjU5My0xNS41OCAyNi45NzRsLTAuMTUgMC4wODAtMTY4LjQyOCAxMDAuMDY1djE5Ny41M2MwIDAuMDM3IDAgMC4wODAgMCAwLjEyMyAwIDE3LjIzOC0xMy45NzQgMzEuMjEyLTMxLjIxMiAzMS4yMTItMC4wNDMgMC0wLjA4NyAwLTAuMTMgMGgwLjAwN3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTI4OyIgZ2x5cGgtbmFtZT0idG9nZ2xlX29mZiIgZD0iTTczNy4zNiA3MDguMjU2aC00MzMuNzQ0Yy0xNDMuNzI3IDAtMjYwLjI0LTExNi41MTMtMjYwLjI0LTI2MC4yNHMxMTYuNTEzLTI2MC4yNCAyNjAuMjQtMjYwLjI0djBoNDMzLjc0NGMxNDMuNzI3IDAgMjYwLjI0IDExNi41MTMgMjYwLjI0IDI2MC4yNHMtMTE2LjUxMyAyNjAuMjQtMjYwLjI0IDI2MC4yNHYwek03MzcuMzYgMjc0LjUxMmgtNDMzLjc0NGMtOTUuODE5IDAtMTczLjQ5NiA3Ny42NzctMTczLjQ5NiAxNzMuNDk2czc3LjY3NyAxNzMuNDk2IDE3My40OTYgMTczLjQ5NnYwaDQzMy43NDRjOTUuODE5IDAgMTczLjQ5Ni03Ny42NzcgMTczLjQ5Ni0xNzMuNDk2cy03Ny42NzctMTczLjQ5Ni0xNzMuNDk2LTE3My40OTZ2MHpNMzAzLjYxNiA1NzguMTI4Yy03MS44NTQtMC4wMTgtMTMwLjA5Ni01OC4yNzItMTMwLjA5Ni0xMzAuMTI4IDAtNzEuODY4IDU4LjI2LTEzMC4xMjggMTMwLjEyOC0xMzAuMTI4czEzMC4xMjggNTguMjYgMTMwLjEyOCAxMzAuMTI4YzAgMC4wMDYgMCAwLjAxMSAwIDAuMDE3di0wLjAwMWMwIDAuMDQ4IDAgMC4xMDQgMCAwLjE2IDAgNzEuNzcxLTU4LjE4MSAxMjkuOTUyLTEyOS45NTIgMTI5Ljk1Mi0wLjA3MyAwLTAuMTQ2IDAtMC4yMiAwaDAuMDExeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5Mjk7IiBnbHlwaC1uYW1lPSJ0b2dnbGVfb24iIGQ9Ik03MzcuMzYgNzA4LjI1NmgtNDMzLjc0NGMtMTQzLjcyNyAwLTI2MC4yNC0xMTYuNTEzLTI2MC4yNC0yNjAuMjRzMTE2LjUxMy0yNjAuMjQgMjYwLjI0LTI2MC4yNHYwaDQzMy43NDRjMTQzLjcyNyAwIDI2MC4yNCAxMTYuNTEzIDI2MC4yNCAyNjAuMjRzLTExNi41MTMgMjYwLjI0LTI2MC4yNCAyNjAuMjR2MHpNNzM3LjM2IDI3NC41MTJoLTQzMy43NDRjLTk1LjgxOSAwLTE3My40OTYgNzcuNjc3LTE3My40OTYgMTczLjQ5NnM3Ny42NzcgMTczLjQ5NiAxNzMuNDk2IDE3My40OTZ2MGg0MzMuNzQ0Yzk1LjgxOSAwIDE3My40OTYtNzcuNjc3IDE3My40OTYtMTczLjQ5NnMtNzcuNjc3LTE3My40OTYtMTczLjQ5Ni0xNzMuNDk2djB6TTczNy4zNiA1NzguMTI4Yy03MS44NjggMC0xMzAuMTI4LTU4LjI2LTEzMC4xMjgtMTMwLjEyOHM1OC4yNi0xMzAuMTI4IDEzMC4xMjgtMTMwLjEyOGM3MS44NjggMCAxMzAuMTI4IDU4LjI2IDEzMC4xMjggMTMwLjEyOHYwYzAgMC4wNTIgMCAwLjExNCAwIDAuMTc2IDAgNzEuNzcxLTU4LjE4MSAxMjkuOTUyLTEyOS45NTIgMTI5Ljk1Mi0wLjA2MiAwLTAuMTI0IDAtMC4xODYgMGgwLjAwOXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTJhOyIgZ2x5cGgtbmFtZT0idmlzaWJsZSIgZD0iTTUxMiA3ODkuMzRjLTIxMi4xMjMtMC4xMjQtMzkzLjYyLTEzMS4xMTYtNDY4LjEzNi0zMTYuNjA1bC0xLjIwNS0zLjM5NWM3NS42MjMtMTg4Ljk1MyAyNTcuMTczLTMxOS45OTMgNDY5LjMzLTMxOS45OTNzMzkzLjcwNyAxMzEuMDQxIDQ2OC4xMjggMzE2LjU5OWwxLjIwMiAzLjM5NWMtNzUuNzE3IDE4OC44NzctMjU3LjIwNCAzMTkuODY3LTQ2OS4zMDIgMzIwaC0wLjAxN3pNNTEyIDI1NmMtMC4wMDYgMC0wLjAxMyAwLTAuMDIwIDAtMTE3LjgyNSAwLTIxMy4zNCA5NS41MTYtMjEzLjM0IDIxMy4zNHM5NS41MTYgMjEzLjM0IDIxMy4zNCAyMTMuMzRjMTE3LjgyNSAwIDIxMy4zNC05NS41MTYgMjEzLjM0LTIxMy4zNHYwYy0wLjAzNS0xMTcuODAzLTk1LjUxOC0yMTMuMjkzLTIxMy4zMTUtMjEzLjM0aC0wLjAwNXpNNTEyIDU5Ny4zNGMtNzAuNjkyIDAtMTI4LTU3LjMwOC0xMjgtMTI4czU3LjMwOC0xMjggMTI4LTEyOGM3MC42OTIgMCAxMjggNTcuMzA4IDEyOCAxMjh2MGMwIDAuMDQ5IDAgMC4xMDYgMCAwLjE2NCAwIDcwLjYwMi01Ny4yMzQgMTI3LjgzNi0xMjcuODM2IDEyNy44MzYtMC4wNTggMC0wLjExNSAwLTAuMTczIDBoMC4wMDl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkzMDsiIGdseXBoLW5hbWU9ImFjY2Vzc190aW1lX2JsYWNrXzI0ZHAiIGQ9Ik01MTEuNTczIDg3NC42NjdjLTIzNS41MiAwLTQyNi4yNC0xOTEuMTQ3LTQyNi4yNC00MjYuNjY3czE5MC43Mi00MjYuNjY3IDQyNi4yNC00MjYuNjY3YzIzNS45NDcgMCA0MjcuMDkzIDE5MS4xNDcgNDI3LjA5MyA0MjYuNjY3cy0xOTEuMTQ3IDQyNi42NjctNDI3LjA5MyA0MjYuNjY3ek01MTIgMTA2LjY2N2MtMTg4LjU4NyAwLTM0MS4zMzMgMTUyLjc0Ny0zNDEuMzMzIDM0MS4zMzNzMTUyLjc0NyAzNDEuMzMzIDM0MS4zMzMgMzQxLjMzMyAzNDEuMzMzLTE1Mi43NDcgMzQxLjMzMy0zNDEuMzMzLTE1Mi43NDctMzQxLjMzMy0zNDEuMzMzLTM0MS4zMzN6TTUwMi42MTMgNjYxLjMzM2gtMi41NmMtMTcuMDY3IDAtMzAuNzItMTMuNjUzLTMwLjcyLTMwLjcydi0yMDEuMzg3YzAtMTQuOTMzIDcuNjgtMjkuMDEzIDIwLjkwNy0zNi42OTNsMTc3LjA2Ny0xMDYuMjRjMTQuNTA3LTguNTMzIDMzLjI4LTQuMjY3IDQxLjgxMyAxMC4yNCA4Ljk2IDE0LjUwNyA0LjI2NyAzMy43MDctMTAuNjY3IDQyLjI0bC0xNjUuMTIgOTguMTMzdjE5My43MDdjMCAxNy4wNjctMTMuNjUzIDMwLjcyLTMwLjcyIDMwLjcyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5MzE7IiBnbHlwaC1uYW1lPSJhY2Nlc3NfdGltZV9maWxsZWRfYmxhY2tfMjRkcCIgZD0iTTUxMS41NzMgODc0LjY2N2MtMjM1LjUyIDAtNDI2LjI0LTE5MS4xNDctNDI2LjI0LTQyNi42NjdzMTkwLjcyLTQyNi42NjcgNDI2LjI0LTQyNi42NjdjMjM1Ljk0NyAwIDQyNy4wOTMgMTkxLjE0NyA0MjcuMDkzIDQyNi42NjdzLTE5MS4xNDcgNDI2LjY2Ny00MjcuMDkzIDQyNi42Njd6TTY4Mi42NjcgMjc3LjMzM2MtMTYuNjQtMTYuNjQtNDMuNTItMTYuNjQtNjAuMTYgMGwtMTQwLjM3MyAxNDAuMzczYy04LjEwNyA4LjEwNy0xMi44IDE4Ljc3My0xMi44IDMwLjI5M3YxNzAuNjY3YzAgMjMuNDY3IDE5LjIgNDIuNjY3IDQyLjY2NyA0Mi42Njd2MGMyMy40NjcgMCA0Mi42NjctMTkuMiA0Mi42NjctNDIuNjY3di0xNTMuMTczbDEyOC0xMjhjMTYuNjQtMTYuNjQgMTYuNjQtNDMuNTIgMC02MC4xNnoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTMyOyIgZ2x5cGgtbmFtZT0iYWNjb3VudF90cmVlX2JsYWNrXzI0ZHAiIGQ9Ik03MjUuMzMzIDQ5MC42NjdoMTI4YzQ3LjM2IDAgODUuMzMzIDM4LjQgODUuMzMzIDg1LjMzM3YxNzAuNjY3YzAgNDcuMzYtMzguNCA4NS4zMzMtODUuMzMzIDg1LjMzM2gtMTI4Yy00Ny4zNiAwLTg1LjMzMy0zOC40LTg1LjMzMy04NS4zMzN2LTQyLjY2N2gtMjU1LjU3M3Y0Mi42NjdjMCA0Ny4zNi0zOC40IDg1LjMzMy04NS4zMzMgODUuMzMzaC0xMjguNDI3Yy00Ni45MzMgMC04NS4zMzMtMzguNC04NS4zMzMtODUuMzMzdi0xNzAuNjY3YzAtNDcuMzYgMzguNC04NS4zMzMgODUuMzMzLTg1LjMzM2gxMjhjNDcuMzYgMCA4NS4zMzMgMzguNCA4NS4zMzMgODUuMzMzdjQyLjY2N2g4NS4zMzN2LTI5OS4wOTNjMC03MC40IDU3LjE3My0xMjcuNTczIDEyNy41NzMtMTI3LjU3M2g0My4wOTN2LTQyLjY2N2MwLTQ3LjM2IDM4LjQtODUuMzMzIDg1LjMzMy04NS4zMzNoMTI4YzQ3LjM2IDAgODUuMzMzIDM4LjQgODUuMzMzIDg1LjMzM3YxNzAuNjY3YzAgNDcuMzYtMzguNCA4NS4zMzMtODUuMzMzIDg1LjMzM2gtMTI4Yy00Ny4zNiAwLTg1LjMzMy0zOC40LTg1LjMzMy04NS4zMzN2LTQyLjY2N2gtNDMuMDkzYy0yMy4wNDAgMC00Mi4yNCAxOS4yLTQyLjI0IDQyLjI0djI5OS4wOTNoODUuMzMzdi00Mi42NjdjMC00Ni45MzMgMzguNC04NS4zMzMgODUuMzMzLTg1LjMzM3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTMzOyIgZ2x5cGgtbmFtZT0iYWRkX2FsZXJ0X2JsYWNrXzI0ZHAiIGQ9Ik01MTIgMjEuMzMzYzQ2LjkzMyAwIDg1LjMzMyAzOC40IDg1LjMzMyA4NS4zMzNoLTE3MC42NjdjMC00Ni45MzMgMzguNC04NS4zMzMgODUuMzMzLTg1LjMzM3pNODEwLjY2NyAyMzQuNjY3aC00Mi42Njd2Mjk4LjY2N2MwIDExOS4wNDAtODEuNDkzIDIxOS4zMDctMTkyIDI0Ny40Njd2MjkuODY3YzAgMzUuNDEzLTI4LjU4NyA2NC02NCA2NHMtNjQtMjguNTg3LTY0LTY0di0yOS44NjdjLTExMC41MDctMjguMTYtMTkyLTEyOC40MjctMTkyLTI0Ny40Njd2LTI5OC42NjdoLTQyLjY2N2MtMjMuNDY3IDAtNDIuNjY3LTE5LjItNDIuNjY3LTQyLjY2N3MxOS4yLTQyLjY2NyA0Mi42NjctNDIuNjY3aDU5Ny4zMzNjMjMuNDY3IDAgNDIuNjY3IDE5LjIgNDIuNjY3IDQyLjY2N3MtMTkuMiA0Mi42NjctNDIuNjY3IDQyLjY2N3pNNTk3LjMzMyA0MDUuMzMzaC00Mi42Njd2LTQyLjY2N2MwLTIzLjQ2Ny0xOS4yLTQyLjY2Ny00Mi42NjctNDIuNjY3cy00Mi42NjcgMTkuMi00Mi42NjcgNDIuNjY3djQyLjY2N2gtNDIuNjY3Yy0yMy40NjcgMC00Mi42NjcgMTkuMi00Mi42NjcgNDIuNjY3czE5LjIgNDIuNjY3IDQyLjY2NyA0Mi42NjdoNDIuNjY3djQyLjY2N2MwIDIzLjQ2NyAxOS4yIDQyLjY2NyA0Mi42NjcgNDIuNjY3czQyLjY2Ny0xOS4yIDQyLjY2Ny00Mi42Njd2LTQyLjY2N2g0Mi42NjdjMjMuNDY3IDAgNDIuNjY3LTE5LjIgNDIuNjY3LTQyLjY2N3MtMTkuMi00Mi42NjctNDIuNjY3LTQyLjY2N3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTM0OyIgZ2x5cGgtbmFtZT0iYWxhcm1fYmxhY2tfMjRkcCIgZD0iTTY3Ny4xMiAzMDkuMzMzbC0xNDMuNzg3IDg1LjMzM3YxOTMuMjhjMCAxNy4wNjctMTMuNjUzIDMwLjcyLTMwLjcyIDMwLjcyaC0yLjU2Yy0xNy4wNjcgMC0zMC43Mi0xMy42NTMtMzAuNzItMzAuNzJ2LTIwMS4zODdjMC0xNC45MzMgNy42OC0yOS4wMTMgMjAuOTA3LTM2LjY5M2wxNTUuNzMzLTkzLjQ0YzE0LjUwNy04LjUzMyAzMy4yOC00LjI2NyA0MS44MTMgMTAuMjQgOC45NiAxNC45MzMgNC4yNjcgMzQuMTMzLTEwLjY2NyA0Mi42Njd6TTkwMy42OCA3NDYuMjRsLTEzMS40MTMgMTA5LjIyN2MtMTcuOTIgMTQuOTMzLTQ0LjggMTIuOC02MC4xNi01LjU0Ny0xNC45MzMtMTcuOTItMTIuMzczLTQ0LjggNS41NDctNjAuMTZsMTMwLjk4Ny0xMDkuMjI3YzE3LjkyLTE0LjkzMyA0NC44LTEyLjggNjAuMTYgNS41NDcgMTUuMzYgMTcuOTIgMTIuOCA0NC44LTUuMTIgNjAuMTZ6TTE3NC45MzMgNjgwLjUzM2wxMzAuOTg3IDEwOS4yMjdjMTguMzQ3IDE1LjM2IDIwLjkwNyA0Mi4yNCA1LjU0NyA2MC4xNi0xNC45MzMgMTguMzQ3LTQxLjgxMyAyMC40OC01OS43MzMgNS41NDdsLTEzMS40MTMtMTA5LjIyN2MtMTcuOTItMTUuMzYtMjAuNDgtNDIuMjQtNS4xMi02MC4xNiAxNC45MzMtMTguMzQ3IDQxLjgxMy0yMC40OCA1OS43MzMtNS41NDd6TTUxMiA3ODkuMzMzYy0yMTIuMDUzIDAtMzg0LTE3MS45NDctMzg0LTM4NHMxNzEuOTQ3LTM4NCAzODQtMzg0IDM4NCAxNzEuOTQ3IDM4NCAzODQtMTcxLjk0NyAzODQtMzg0IDM4NHpNNTEyIDEwNi42NjdjLTE2NC42OTMgMC0yOTguNjY3IDEzMy45NzMtMjk4LjY2NyAyOTguNjY3czEzMy45NzMgMjk4LjY2NyAyOTguNjY3IDI5OC42NjcgMjk4LjY2Ny0xMzMuOTczIDI5OC42NjctMjk4LjY2Ny0xMzMuOTczLTI5OC42NjctMjk4LjY2Ny0yOTguNjY3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5MzU7IiBnbHlwaC1uYW1lPSJhbm5vdW5jZW1lbnRfYmxhY2tfMjRkcCIgZD0iTTg1My4zMzMgODc0LjY2N2gtNjgyLjY2N2MtNDYuOTMzIDAtODUuMzMzLTM4LjQtODUuMzMzLTg1LjMzM3YtNzY4bDE3MC42NjcgMTcwLjY2N2g1OTcuMzMzYzQ2LjkzMyAwIDg1LjMzMyAzOC40IDg1LjMzMyA4NS4zMzN2NTEyYzAgNDYuOTMzLTM4LjQgODUuMzMzLTg1LjMzMyA4NS4zMzN6TTUxMiA0OTAuNjY3Yy0yMy40NjcgMC00Mi42NjcgMTkuMi00Mi42NjcgNDIuNjY3djE3MC42NjdjMCAyMy40NjcgMTkuMiA0Mi42NjcgNDIuNjY3IDQyLjY2N3M0Mi42NjctMTkuMiA0Mi42NjctNDIuNjY3di0xNzAuNjY3YzAtMjMuNDY3LTE5LjItNDIuNjY3LTQyLjY2Ny00Mi42Njd6TTU1NC42NjcgMzIwaC04NS4zMzN2ODUuMzMzaDg1LjMzM3YtODUuMzMzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5MzY7IiBnbHlwaC1uYW1lPSJhdXRvX2RlbGV0ZV9ibGFja18yNGRwIiBkPSJNNjgyLjY2NyA1NzZjLTI5Ljg2NyAwLTU4LjQ1My00LjI2Ny04NS4zMzMtMTIuMzczdjk3LjcwN2MwIDQ2LjkzMy0zOC40IDg1LjMzMy04NS4zMzMgODUuMzMzaC0zNDEuMzMzYy00Ni45MzMgMC04NS4zMzMtMzguNC04NS4zMzMtODUuMzMzdi00MjYuNjY3YzAtNDYuOTMzIDM4LjQtODUuMzMzIDg1LjMzMy04NS4zMzNoMjQyLjM0N2M0Ny43ODctMTAwLjY5MyAxNTAuNjEzLTE3MC42NjcgMjY5LjY1My0xNzAuNjY3IDE2NS4xMiAwIDI5OC42NjcgMTMzLjU0NyAyOTguNjY3IDI5OC42NjdzLTEzMy41NDcgMjk4LjY2Ny0yOTguNjY3IDI5OC42Njd6TTY4Mi42NjcgNjRjLTExNy43NiAwLTIxMy4zMzMgOTUuNTczLTIxMy4zMzMgMjEzLjMzM3M5NS41NzMgMjEzLjMzMyAyMTMuMzMzIDIxMy4zMzMgMjEzLjMzMy05NS41NzMgMjEzLjMzMy0yMTMuMzMzLTk1LjU3My0yMTMuMzMzLTIxMy4zMzMtMjEzLjMzM3pNNTk3LjMzMyA3ODkuMzMzYzIzLjQ2NyAwIDQyLjY2NyAxOS4yIDQyLjY2NyA0Mi42NjdzLTE5LjIgNDIuNjY3LTQyLjY2NyA0Mi42NjdoLTEwNi42NjdsLTMwLjI5MyAzMC4yOTNjLTcuNjggNy42OC0xOC43NzMgMTIuMzczLTI5Ljg2NyAxMi4zNzNoLTE3OC4zNDdjLTExLjA5MyAwLTIyLjE4Ny00LjY5My0yOS44NjctMTIuMzczbC0zMC4yOTMtMzAuMjkzaC0xMDYuNjY3Yy0yMy40NjcgMC00Mi42NjctMTkuMi00Mi42NjctNDIuNjY3czE5LjItNDIuNjY3IDQyLjY2Ny00Mi42NjdoNTEyek02NzIgNDQ4djBjLTE3LjQ5MyAwLTMyLTE0LjUwNy0zMi0zMnYtMTU3LjAxM2MwLTE1LjM2IDguMTA3LTI5LjAxMyAyMS4zMzMtMzYuNjkzbDEwNy41Mi02Mi43MmMxNC4wODAtOC4xMDcgMzItMy44NCA0MC45NiA5LjM4N3YwYzkuODEzIDE0LjUwNyA1LjEyIDM0LjU2LTEwLjI0IDQzLjUybC05NS41NzMgNTYuMzJ2MTQ3LjJjMCAxNy40OTMtMTQuNTA3IDMyLTMyIDMyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5Mzc7IiBnbHlwaC1uYW1lPSJidWdfcmVwb3J0X2JsYWNrXzI0ZHAiIGQ9Ik04MTAuNjY3IDYxOC42NjdoLTc3LjIyN2MtMTkuMiAzMy4yOC00NS42NTMgNjEuODY3LTc3LjY1MyA4My42MjdsMzkuNjggMzkuNjhjMTYuNjQgMTYuNjQgMTYuNjQgNDMuNTIgMCA2MC4xNnMtNDMuNTIgMTYuNjQtNjAuMTYgMGwtNjIuNzItNjIuNzJjLTE5LjYyNyA0LjY5My0zOS42OCA3LjI1My02MC41ODcgNy4yNTNzLTQwLjk2LTIuNTYtNjAuMTYtNy4yNTNsLTYzLjE0NyA2Mi43MmMtMTYuNjQgMTYuNjQtNDMuNTIgMTYuNjQtNjAuMTYgMHMtMTYuNjQtNDMuNTIgMC02MC4xNmwzOS4yNTMtMzkuNjhjLTMxLjU3My0yMS43Ni01OC4wMjctNTAuMzQ3LTc3LjIyNy04My42MjdoLTc3LjIyN2MtMjMuNDY3IDAtNDIuNjY3LTE5LjItNDIuNjY3LTQyLjY2N3MxOS4yLTQyLjY2NyA0Mi42NjctNDIuNjY3aDQ2LjUwN2MtMi4xMzMtMTQuMDgwLTMuODQtMjguMTYtMy44NC00Mi42Njd2LTQyLjY2N2gtNDIuNjY3Yy0yMy40NjcgMC00Mi42NjctMTkuMi00Mi42NjctNDIuNjY3czE5LjItNDIuNjY3IDQyLjY2Ny00Mi42NjdoNDIuNjY3di00Mi42NjdjMC0xNC41MDcgMS43MDctMjguNTg3IDMuODQtNDIuNjY3aC00Ni41MDdjLTIzLjQ2NyAwLTQyLjY2Ny0xOS4yLTQyLjY2Ny00Mi42NjdzMTkuMi00Mi42NjcgNDIuNjY3LTQyLjY2N2g3Ny4yMjdjNDQuMzczLTc2LjM3MyAxMjYuNzItMTI4IDIyMS40NC0xMjhzMTc3LjA2NyA1MS42MjcgMjIxLjQ0IDEyOGg3Ny4yMjdjMjMuNDY3IDAgNDIuNjY3IDE5LjIgNDIuNjY3IDQyLjY2N3MtMTkuMiA0Mi42NjctNDIuNjY3IDQyLjY2N2gtNDYuNTA3YzIuMTMzIDE0LjA4MCAzLjg0IDI4LjE2IDMuODQgNDIuNjY3djQyLjY2N2g0Mi42NjdjMjMuNDY3IDAgNDIuNjY3IDE5LjIgNDIuNjY3IDQyLjY2N3MtMTkuMiA0Mi42NjctNDIuNjY3IDQyLjY2N2gtNDIuNjY3djQyLjY2N2MwIDE0LjUwNy0xLjcwNyAyOC41ODctMy44NCA0Mi42NjdoNDYuNTA3YzIzLjQ2NyAwIDQyLjY2NyAxOS4yIDQyLjY2NyA0Mi42NjdzLTE5LjIgNDIuNjY3LTQyLjY2NyA0Mi42Njd6TTU1NC42NjcgMjc3LjMzM2gtODUuMzMzYy0yMy40NjcgMC00Mi42NjcgMTkuMi00Mi42NjcgNDIuNjY3czE5LjIgNDIuNjY3IDQyLjY2NyA0Mi42NjdoODUuMzMzYzIzLjQ2NyAwIDQyLjY2Ny0xOS4yIDQyLjY2Ny00Mi42NjdzLTE5LjItNDIuNjY3LTQyLjY2Ny00Mi42Njd6TTU1NC42NjcgNDQ4aC04NS4zMzNjLTIzLjQ2NyAwLTQyLjY2NyAxOS4yLTQyLjY2NyA0Mi42NjdzMTkuMiA0Mi42NjcgNDIuNjY3IDQyLjY2N2g4NS4zMzNjMjMuNDY3IDAgNDIuNjY3LTE5LjIgNDIuNjY3LTQyLjY2N3MtMTkuMi00Mi42NjctNDIuNjY3LTQyLjY2N3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTM4OyIgZ2x5cGgtbmFtZT0iYnVzaW5lc3NfY2VudGVyX2JsYWNrXzI0ZHAiIGQ9Ik01NTQuNjY3IDI3Ny4zMzNoLTg1LjMzM2MtMjMuNDY3IDAtNDIuNjY3IDE5LjItNDIuNjY3IDQyLjY2N2gtMjk4LjI0di0xNzAuNjY3YzAtNDYuOTMzIDM4LjQtODUuMzMzIDg1LjMzMy04NS4zMzNoNTk2LjkwN2M0Ni45MzMgMCA4NS4zMzMgMzguNCA4NS4zMzMgODUuMzMzdjE3MC42NjdoLTI5OC42NjdjMC0yMy40NjctMTkuMi00Mi42NjctNDIuNjY3LTQyLjY2N3pNODUzLjMzMyA2NjEuMzMzaC0xNzAuNjY3YzAgOTQuMjkzLTc2LjM3MyAxNzAuNjY3LTE3MC42NjcgMTcwLjY2N3MtMTcwLjY2Ny03Ni4zNzMtMTcwLjY2Ny0xNzAuNjY3aC0xNzAuNjY3Yy00Ni45MzMgMC04NS4zMzMtMzguNC04NS4zMzMtODUuMzMzdi0xMjhjMC00Ny4zNiAzNy45NzMtODUuMzMzIDg1LjMzMy04NS4zMzNoMjU2djQyLjY2N2MwIDIzLjQ2NyAxOS4yIDQyLjY2NyA0Mi42NjcgNDIuNjY3aDg1LjMzM2MyMy40NjcgMCA0Mi42NjctMTkuMiA0Mi42NjctNDIuNjY3di00Mi42NjdoMjU2YzQ2LjkzMyAwIDg1LjMzMyAzOC40IDg1LjMzMyA4NS4zMzN2MTI4YzAgNDYuOTMzLTM4LjQgODUuMzMzLTg1LjMzMyA4NS4zMzN6TTQyNi42NjcgNjYxLjMzM2MwIDQ2LjkzMyAzOC40IDg1LjMzMyA4NS4zMzMgODUuMzMzczg1LjMzMy0zOC40IDg1LjMzMy04NS4zMzNoLTE3MC42Njd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkzOTsiIGdseXBoLW5hbWU9ImNoZWNrX2JveF9ibGFja18yNGRwIiBkPSJNODEwLjY2NyA4MzJoLTU5Ny4zMzNjLTQ2LjkzMyAwLTg1LjMzMy0zOC40LTg1LjMzMy04NS4zMzN2LTU5Ny4zMzNjMC00Ni45MzMgMzguNC04NS4zMzMgODUuMzMzLTg1LjMzM2g1OTcuMzMzYzQ2LjkzMyAwIDg1LjMzMyAzOC40IDg1LjMzMyA4NS4zMzN2NTk3LjMzM2MwIDQ2LjkzMy0zOC40IDg1LjMzMy04NS4zMzMgODUuMzMzek00NTYuOTYgMjY0Ljk2Yy0xNi42NC0xNi42NC00My41Mi0xNi42NC02MC4xNiAwbC0xNTMuMTczIDE1My4xNzNjLTE2LjY0IDE2LjY0LTE2LjY0IDQzLjUyIDAgNjAuMTZzNDMuNTIgMTYuNjQgNjAuMTYgMGwxMjIuODgtMTIyLjg4IDI5My41NDcgMjkzLjU0N2MxNi42NCAxNi42NCA0My41MiAxNi42NCA2MC4xNiAwczE2LjY0LTQzLjUyIDAtNjAuMTZsLTMyMy40MTMtMzIzLjg0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5M2E7IiBnbHlwaC1uYW1lPSJjaGVja19ib3hfb3V0bGluZV9ibGFua19ibGFja18yNGRwIiBkPSJNNzY4IDE0OS4zMzNoLTUxMmMtMjMuNDY3IDAtNDIuNjY3IDE5LjItNDIuNjY3IDQyLjY2N3Y1MTJjMCAyMy40NjcgMTkuMiA0Mi42NjcgNDIuNjY3IDQyLjY2N2g1MTJjMjMuNDY3IDAgNDIuNjY3LTE5LjIgNDIuNjY3LTQyLjY2N3YtNTEyYzAtMjMuNDY3LTE5LjItNDIuNjY3LTQyLjY2Ny00Mi42Njd6TTgxMC42NjcgODMyaC01OTcuMzMzYy00Ni45MzMgMC04NS4zMzMtMzguNC04NS4zMzMtODUuMzMzdi01OTcuMzMzYzAtNDYuOTMzIDM4LjQtODUuMzMzIDg1LjMzMy04NS4zMzNoNTk3LjMzM2M0Ni45MzMgMCA4NS4zMzMgMzguNCA4NS4zMzMgODUuMzMzdjU5Ny4zMzNjMCA0Ni45MzMtMzguNCA4NS4zMzMtODUuMzMzIDg1LjMzM3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTNiOyIgZ2x5cGgtbmFtZT0iY2hldnJvbl9sZWZ0X2JsYWNrXzI0ZHAiIGQ9Ik02MjcuNjI3IDY3My43MDdjLTE2LjY0IDE2LjY0LTQzLjUyIDE2LjY0LTYwLjE2IDBsLTE5NS44NC0xOTUuODRjLTE2LjY0LTE2LjY0LTE2LjY0LTQzLjUyIDAtNjAuMTZsMTk1Ljg0LTE5NS44NGMxNi42NC0xNi42NCA0My41Mi0xNi42NCA2MC4xNiAwczE2LjY0IDQzLjUyIDAgNjAuMTZsLTE2NS41NDcgMTY1Ljk3MyAxNjUuNTQ3IDE2NS41NDdjMTYuNjQgMTYuNjQgMTYuMjEzIDQzLjk0NyAwIDYwLjE2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5M2M7IiBnbHlwaC1uYW1lPSJjaGV2cm9uX3JpZ2h0X2JsYWNrXzI0ZHAiIGQ9Ik0zOTYuMzczIDY3My43MDdjLTE2LjY0LTE2LjY0LTE2LjY0LTQzLjUyIDAtNjAuMTZsMTY1LjU0Ny0xNjUuNTQ3LTE2NS41NDctMTY1LjU0N2MtMTYuNjQtMTYuNjQtMTYuNjQtNDMuNTIgMC02MC4xNnM0My41Mi0xNi42NCA2MC4xNiAwbDE5NS44NCAxOTUuODRjMTYuNjQgMTYuNjQgMTYuNjQgNDMuNTIgMCA2MC4xNmwtMTk1Ljg0IDE5NS44NGMtMTYuMjEzIDE2LjIxMy00My41MiAxNi4yMTMtNjAuMTYtMC40Mjd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkzZDsiIGdseXBoLW5hbWU9ImNvdHRhZ2VfYmxhY2tfMjRkcCIgZD0iTTk1NS4zMDcgNDM5Ljg5M2MxNC41MDcgMTguNzczIDEwLjY2NyA0NS42NTMtOC4xMDcgNTkuNzMzbC00MDkuNiAzMTIuNzQ3Yy0xNS4zNiAxMS41Mi0zNi42OTMgMTEuNTItNTEuNjI3IDBsLTIyOS45NzMtMTc1Ljc4N3YyNC43NDdjMCAyMy40NjctMTkuMiA0Mi42NjctNDIuNjY3IDQyLjY2N3MtNDIuNjY3LTE5LjItNDIuNjY3LTQyLjY2N3YtOTAuMDI3bC05NC4yOTMtNzEuNjhjLTE4Ljc3My0xNC4wODAtMjIuMTg3LTQwLjk2LTguMTA3LTU5LjczMyAxNC41MDctMTguNzczIDQwLjk2LTIyLjE4NyA1OS43MzMtOC4xMDdsNDIuNjY3IDMyLjQyN3YtMzU3LjU0N2MwLTIzLjQ2NyAxOS4yLTQyLjY2NyA0Mi42NjctNDIuNjY3aDI1NnYyMTMuMzMzYzAgMjMuNDY3IDE5LjIgNDIuNjY3IDQyLjY2NyA0Mi42NjdzNDIuNjY3LTE5LjIgNDIuNjY3LTQyLjY2N3YtMjEzLjMzM2gyNTZjMjMuNDY3IDAgNDIuNjY3IDE5LjIgNDIuNjY3IDQyLjY2N3YzNTcuNTQ3bDQyLjI0LTMyLjQyN2MxOC43NzMtMTQuNTA3IDQ1LjY1My0xMC42NjcgNTkuNzMzIDguMTA3ek0yMjQuODUzIDc0Ni42NjdjLTMxLjU3MyAwLTUzLjc2IDM0LjEzMy0zOC40IDYxLjg2NyAyMi4xODcgMzkuNjggNjQgNjYuMTMzIDExMi4yMTMgNjYuMTMzIDE2LjIxMyAwIDMwLjcyIDkuMzg3IDM3Ljk3MyAyMi42MTMgNi40IDEzLjIyNyAyMS4zMzMgMjAuMDUzIDM1Ljg0IDIwLjA1MyAzMS41NzMgMCA1My43Ni0zNC4xMzMgMzguNC02MS44NjctMjIuMTg3LTM5LjY4LTY0LTY2LjEzMy0xMTIuMjEzLTY2LjEzMy0xNi4yMTMgMC0zMC43Mi05LjM4Ny0zNy45NzMtMjIuNjEzLTYuNC0xMy4yMjctMjEuMzMzLTIwLjA1My0zNS44NC0yMC4wNTN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkzZTsiIGdseXBoLW5hbWU9ImRlbGV0ZV9ibGFja18yNGRwIiBkPSJNMjU2IDE0OS4zMzNjMC00Ni45MzMgMzguNC04NS4zMzMgODUuMzMzLTg1LjMzM2gzNDEuMzMzYzQ2LjkzMyAwIDg1LjMzMyAzOC40IDg1LjMzMyA4NS4zMzN2NDI2LjY2N2MwIDQ2LjkzMy0zOC40IDg1LjMzMy04NS4zMzMgODUuMzMzaC0zNDEuMzMzYy00Ni45MzMgMC04NS4zMzMtMzguNC04NS4zMzMtODUuMzMzdi00MjYuNjY3ek03NjggNzg5LjMzM2gtMTA2LjY2N2wtMzAuMjkzIDMwLjI5M2MtNy42OCA3LjY4LTE4Ljc3MyAxMi4zNzMtMjkuODY3IDEyLjM3M2gtMTc4LjM0N2MtMTEuMDkzIDAtMjIuMTg3LTQuNjkzLTI5Ljg2Ny0xMi4zNzNsLTMwLjI5My0zMC4yOTNoLTEwNi42NjdjLTIzLjQ2NyAwLTQyLjY2Ny0xOS4yLTQyLjY2Ny00Mi42NjdzMTkuMi00Mi42NjcgNDIuNjY3LTQyLjY2N2g1MTJjMjMuNDY3IDAgNDIuNjY3IDE5LjIgNDIuNjY3IDQyLjY2N3MtMTkuMiA0Mi42NjctNDIuNjY3IDQyLjY2N3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTNmOyIgZ2x5cGgtbmFtZT0iZGlyZWN0aW9uc19ydW5fYmxhY2tfMjRkcCIgZD0iTTU3NS41NzMgNzI2LjE4N2M0Ni45MzMgMCA4NS4zMzMgMzguNCA4NS4zMzMgODUuMzMzcy0zOC40IDg1LjMzMy04NS4zMzMgODUuMzMzLTg1LjMzMy0zOC40LTg1LjMzMy04NS4zMzMgMzguNC04NS4zMzMgODUuMzMzLTg1LjMzM3pNNDQwLjMyIDIxNC4xODdsMjQuMzIgMTA2LjY2NyA4OS42LTg1LjMzM3YtMjEzLjMzM2MwLTIzLjQ2NyAxOS4yLTQyLjY2NyA0Mi42NjctNDIuNjY3czQyLjY2NyAxOS4yIDQyLjY2NyA0Mi42Njd2MjQwLjY0YzAgMjMuNDY3LTkuMzg3IDQ1LjY1My0yNi40NTMgNjEuODY3bC02My4xNDcgNjAuMTYgMjUuNiAxMjhjNDUuNjUzLTUyLjkwNyAxMTEuNzg3LTkwLjg4IDE4Ni4wMjctMTAyLjgyNyAyNS42LTMuODQgNDguNjQgMTYuNjQgNDguNjQgNDIuNjY3IDAgMjAuOTA3LTE1LjM2IDM4LjQtMzYuMjY3IDQxLjgxMy02NC44NTMgMTAuNjY3LTExOC42MTMgNDkuMDY3LTE0Ny4yIDk5LjQxM2wtNDIuNjY3IDY4LjI2N2MtMTcuMDY3IDI1LjYtNDIuNjY3IDQyLjY2Ny03Mi41MzMgNDIuNjY3LTEyLjggMC0yMS4zMzMtNC4yNjctMzQuMTMzLTQuMjY3bC0xNjkuODEzLTcxLjY4Yy0zMS41NzMtMTMuNjUzLTUyLjA1My00NC4zNzMtNTIuMDUzLTc4LjkzM3YtMTAxLjEyYzAtMjMuNDY3IDE5LjItNDIuNjY3IDQyLjY2Ny00Mi42NjdzNDIuNjY3IDE5LjIgNDIuNjY3IDQyLjY2N3YxMDIuNGw3Ni44IDI5Ljg2Ny02OC4yNjctMzQ1LjYtMTY3LjI1MyAzNC4xMzNjLTIzLjA0MCA0LjY5My00NS42NTMtMTAuMjQtNTAuMzQ3LTMzLjI4di0xLjcwN2MtNC42OTMtMjMuMDQwIDEwLjI0LTQ1LjY1MyAzMy4yOC01MC4zNDdsMTc1LjM2LTM0Ljk4N2M0NS4yMjctOC45NiA4OS42IDE5LjYyNyA5OS44NCA2NC44NTN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTk0MDsiIGdseXBoLW5hbWU9ImRvX2Rpc3R1cmJfYmxhY2tfMjRkcCIgZD0iTTUxMiA4NzQuNjY3Yy0yMzUuNTIgMC00MjYuNjY3LTE5MS4xNDctNDI2LjY2Ny00MjYuNjY3czE5MS4xNDctNDI2LjY2NyA0MjYuNjY3LTQyNi42NjcgNDI2LjY2NyAxOTEuMTQ3IDQyNi42NjcgNDI2LjY2Ny0xOTEuMTQ3IDQyNi42NjctNDI2LjY2NyA0MjYuNjY3ek01MTIgMTA2LjY2N2MtMTg4LjU4NyAwLTM0MS4zMzMgMTUyLjc0Ny0zNDEuMzMzIDM0MS4zMzMgMCA3OC45MzMgMjYuODggMTUxLjQ2NyA3Mi4xMDcgMjA5LjA2N2w0NzguMjkzLTQ3OC4yOTNjLTU3LjYtNDUuMjI3LTEzMC4xMzMtNzIuMTA3LTIwOS4wNjctNzIuMTA3ek03ODEuMjI3IDIzOC45MzNsLTQ3OC4yOTMgNDc4LjI5M2M1Ny42IDQ1LjIyNyAxMzAuMTMzIDcyLjEwNyAyMDkuMDY3IDcyLjEwNyAxODguNTg3IDAgMzQxLjMzMy0xNTIuNzQ3IDM0MS4zMzMtMzQxLjMzMyAwLTc4LjkzMy0yNi44OC0xNTEuNDY3LTcyLjEwNy0yMDkuMDY3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5NDE7IiBnbHlwaC1uYW1lPSJlcnJvcl9ibGFja18yNGRwIiBkPSJNNTEyIDg3NC42NjdjLTIzNS41MiAwLTQyNi42NjctMTkxLjE0Ny00MjYuNjY3LTQyNi42NjdzMTkxLjE0Ny00MjYuNjY3IDQyNi42NjctNDI2LjY2NyA0MjYuNjY3IDE5MS4xNDcgNDI2LjY2NyA0MjYuNjY3LTE5MS4xNDcgNDI2LjY2Ny00MjYuNjY3IDQyNi42Njd6TTUxMiA0MDUuMzMzYy0yMy40NjcgMC00Mi42NjcgMTkuMi00Mi42NjcgNDIuNjY3djE3MC42NjdjMCAyMy40NjcgMTkuMiA0Mi42NjcgNDIuNjY3IDQyLjY2N3M0Mi42NjctMTkuMiA0Mi42NjctNDIuNjY3di0xNzAuNjY3YzAtMjMuNDY3LTE5LjItNDIuNjY3LTQyLjY2Ny00Mi42Njd6TTU1NC42NjcgMjM0LjY2N2gtODUuMzMzdjg1LjMzM2g4NS4zMzN2LTg1LjMzM3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTQyOyIgZ2x5cGgtbmFtZT0iZXJyb3Jfb3V0bGluZV9ibGFja18yNGRwIiBkPSJNNTEyIDY2MS4zMzNjMjMuNDY3IDAgNDIuNjY3LTE5LjIgNDIuNjY3LTQyLjY2N3YtMTcwLjY2N2MwLTIzLjQ2Ny0xOS4yLTQyLjY2Ny00Mi42NjctNDIuNjY3cy00Mi42NjcgMTkuMi00Mi42NjcgNDIuNjY3djE3MC42NjdjMCAyMy40NjcgMTkuMiA0Mi42NjcgNDIuNjY3IDQyLjY2N3pNNTExLjU3MyA4NzQuNjY3Yy0yMzUuNTIgMC00MjYuMjQtMTkxLjE0Ny00MjYuMjQtNDI2LjY2N3MxOTAuNzItNDI2LjY2NyA0MjYuMjQtNDI2LjY2N2MyMzUuOTQ3IDAgNDI3LjA5MyAxOTEuMTQ3IDQyNy4wOTMgNDI2LjY2N3MtMTkxLjE0NyA0MjYuNjY3LTQyNy4wOTMgNDI2LjY2N3pNNTEyIDEwNi42NjdjLTE4OC41ODcgMC0zNDEuMzMzIDE1Mi43NDctMzQxLjMzMyAzNDEuMzMzczE1Mi43NDcgMzQxLjMzMyAzNDEuMzMzIDM0MS4zMzMgMzQxLjMzMy0xNTIuNzQ3IDM0MS4zMzMtMzQxLjMzMy0xNTIuNzQ3LTM0MS4zMzMtMzQxLjMzMy0zNDEuMzMzek01NTQuNjY3IDIzNC42NjdoLTg1LjMzM3Y4NS4zMzNoODUuMzMzdi04NS4zMzN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTk0MzsiIGdseXBoLW5hbWU9ImV2ZW50X2F2YWlsYWJsZV9ibGFja18yNGRwIiBkPSJNNjgyLjY2NyA1MTAuNzJjLTEyLjM3MyAxMi4zNzMtMzIuODUzIDEyLjM3My00NS4yMjcgMGwtMTg1LjYtMTg1LjYtNjcuODQgNjcuODRjLTEyLjM3MyAxMi4zNzMtMzIuODUzIDEyLjM3My00NS4yMjcgMHMtMTIuMzczLTMyLjg1MyAwLTQ1LjIyN2w4Mi43NzMtODIuNzczYzE2LjY0LTE2LjY0IDQzLjUyLTE2LjY0IDYwLjE2IDBsMjAwLjUzMyAyMDAuNTMzYzEyLjggMTIuMzczIDEyLjggMzIuODUzIDAuNDI3IDQ1LjIyN3pNODEwLjY2NyA4MzJoLTQyLjY2N3Y0Mi42NjdjMCAyMy40NjctMTkuMiA0Mi42NjctNDIuNjY3IDQyLjY2N3MtNDIuNjY3LTE5LjItNDIuNjY3LTQyLjY2N3YtNDIuNjY3aC0zNDEuMzMzdjQyLjY2N2MwIDIzLjQ2Ny0xOS4yIDQyLjY2Ny00Mi42NjcgNDIuNjY3cy00Mi42NjctMTkuMi00Mi42NjctNDIuNjY3di00Mi42NjdoLTQyLjY2N2MtNDcuMzYgMC04NC45MDctMzguNC04NC45MDctODUuMzMzbC0wLjQyNy01OTcuMzMzYzAtNDYuOTMzIDM3Ljk3My04NS4zMzMgODUuMzMzLTg1LjMzM2g1OTcuMzMzYzQ2LjkzMyAwIDg1LjMzMyAzOC40IDg1LjMzMyA4NS4zMzN2NTk3LjMzM2MwIDQ2LjkzMy0zOC40IDg1LjMzMy04NS4zMzMgODUuMzMzek03NjggMTQ5LjMzM2gtNTEyYy0yMy40NjcgMC00Mi42NjcgMTkuMi00Mi42NjcgNDIuNjY3djQyNi42NjdoNTk3LjMzM3YtNDI2LjY2N2MwLTIzLjQ2Ny0xOS4yLTQyLjY2Ny00Mi42NjctNDIuNjY3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5NDQ7IiBnbHlwaC1uYW1lPSJmbHV0dGVyX2Rhc2hfYmxhY2tfMjRkcCIgZD0iTTQ3Mi4zMiA0NjAuOGMxMi4zNzMgMTYuNjQgMzQuNTYgMjMuODkzIDU0LjE4NyAxNS43ODcgNy4yNTMtMi45ODcgMTMuNjUzLTcuNjggMTguMzQ3LTE0LjA4MCA5LjM4Ny0xMS45NDcgMTAuNjY3LTI1LjE3MyA5LjM4Ny0zNi4yNjctMi4xMzMtMTQuMDgwLTEwLjY2Ny0yNi44OC0yMy4wNDAtMzMuNzA3IDAgMC0yMDcuNzg3LTEyNS44NjctMjE2LjMyLTExNC43NzNzMTU3LjQ0IDE4My4wNDAgMTU3LjQ0IDE4My4wNDB6TTkzOC42NjcgNTMzLjMzM2MwLTEwNi42NjctNDIuNjY3LTEyOC02NC0xMjgtOS44MTMgMC0xOC43NzMgNC4yNjctMjYuNDUzIDExLjA5My0yMC40OC0xNDEuNjUzLTEwMC42OTMtMjI2LjU2LTIyNy40MTMtMjU1LjU3MyA0LjY5My0xOC43NzMgMjAuNDgtMzIuODUzIDQwLjUzMy0zMi44NTN2MGgyNC43NDdjOS4zODcgMCAxNy40OTMtNi40IDIwLjQ4LTE1LjM2IDcuMjUzLTIyLjE4NyAyOC4xNi00My41MiA0My41Mi01Ni4zMiAxMC42NjctOC45NiAxMC4yNC0yNS4xNzMtMS4yOC0zMy4yOC0xNC41MDctMTAuMjQtMzguNC0yMC45MDctNzYuMzczLTIyLjYxMy03LjY4LTAuNDI3LTE0LjkzMyAyLjk4Ny0xOS4yIDkuMzg3LTUuNTQ3IDguNTMzLTEzLjIyNyAyMy44OTMtMTMuMjI3IDQzLjA5MyAwIDEyLjggMS43MDcgMjQuMzIgMy44NCAzNC4xMzMtMzMuMjggNi44MjctNTkuMzA3IDMzLjI4LTY2LjEzMyA2Ni41Ni0yMC45MDctMi41Ni00Mi42NjctNC4yNjctNjUuNzA3LTQuMjY3LTM3LjU0NyAwLTcyLjUzMyAzLjg0LTEwNC41MzMgMTAuNjY3LTAuODUzLTMuNDEzLTIuMTMzLTYuODI3LTIuMTMzLTEwLjY2NyAwLTIzLjQ2NyAxOS4yLTQyLjY2NyA0Mi42NjctNDIuNjY3djBoMjQuNzQ3YzkuMzg3IDAgMTcuNDkzLTYuNCAyMC40OC0xNS4zNiA3LjI1My0yMi4xODcgMjguMTYtNDMuNTIgNDMuNTItNTYuMzIgMTAuNjY3LTguOTYgMTAuMjQtMjUuMTczLTEuMjgtMzMuMjgtMTQuNTA3LTEwLjI0LTM4LjQtMjAuOTA3LTc2LjM3My0yMi42MTMtNy42OC0wLjQyNy0xNC45MzMgMi45ODctMTkuMiA5LjM4Ny01LjU0NyA4LjUzMy0xMy4yMjcgMjMuODkzLTEzLjIyNyA0My4wOTMgMCAxMi44IDEuNzA3IDI0LjMyIDMuODQgMzQuMTMzLTM4LjQgOC4xMDctNjcuODQgNDIuNjY3LTY3Ljg0IDgzLjYyNyAwIDcuNjggMS4yOCAxNS4zNiAzLjQxMyAyMi42MTMtMTA0Ljk2IDM2LjY5My0xNzEuOTQ3IDExOC42MTMtMTkwLjI5MyAyNDQuOTA3LTcuNjgtNy4yNTMtMTYuMjEzLTExLjUyLTI2LjQ1My0xMS41Mi0yMS4zMzMgMC02NCAyMS4zMzMtNjQgMTI4IDAgOTYuODUzIDcyLjUzMyAxOTIgMTI4IDE5MiAxOC4zNDcgMCAyMC45MDctMjAuOTA3IDIxLjMzMy0zNi4yNjcgNTQuNjEzIDc1Ljk0NyAxMzkuMDkzIDEyOC44NTMgMjM2LjggMTQwLjM3MyA4LjUzMyA0MC45NiA0Ni4wODAgNjYuNTYgODMuMiA2Ni41NnYtNDIuNjY3YzAgMCAxNC4wODAgMjEuMzMzIDQyLjY2NyAyMS4zMzNzNDIuNjY3LTIxLjMzMyA0Mi42NjctMjEuMzMzYy0yMC45MDcgMC0zNi4yNjctMTQuOTMzLTQwLjk2LTMyLjg1MyA3Ny42NTMtMjAuNDggMTQ0LjY0LTY3Ljg0IDE5MC4yOTMtMTMxLjQxMyAwLjQyNyAxNS4zNiAyLjk4NyAzNi4yNjcgMjEuMzMzIDM2LjI2NyA1NS40NjcgMCAxMjgtOTUuMTQ3IDEyOC0xOTJ6TTIxMy4zMzMgNDkwLjY2N2MwLTM0LjU2IDQuMjY3LTY1LjI4IDEwLjY2Ny05NC4yOTMgNy42OCAyOS40NCAxOS42MjcgNTYuNzQ3IDM1LjQxMyA4MS45Mi04Ljk2IDIwLjA1My0xNC41MDcgNDIuMjQtMTQuNTA3IDY1LjcwNyAwLjQyNyA4OC4zMiA3Mi4xMDcgMTYwIDE2MC40MjcgMTYwIDQwLjk2IDAgNzguNTA3LTE1Ljc4NyAxMDYuNjY3LTQxLjM4NyAyOC4xNiAyNS42IDY1LjcwNyA0MS4zODcgMTA2LjY2NyA0MS4zODcgODguMzIgMCAxNjAtNzEuNjggMTYwLTE2MCAwLTIzLjQ2Ny01LjEyLTQ1LjY1My0xNC41MDctNjUuNzA3IDE1Ljc4Ny0yNS4xNzMgMjguMTYtNTIuOTA3IDM1Ljg0LTgyLjc3MyA2LjQgMjkuMDEzIDEwLjY2NyA2MC4xNiAxMC42NjcgOTUuMTQ3IDAgMTY0LjY5My0xMzMuOTczIDI5OC42NjctMjk4LjY2NyAyOTguNjY3cy0yOTguNjY3LTEzMy45NzMtMjk4LjY2Ny0yOTguNjY3ek03NjcuMTQ3IDMwNy42MjdjMCA0LjI2NyAwLjg1MyA4LjEwNyAwLjg1MyAxMi4zNzMgMCA0My4wOTMtMTEuMDkzIDgzLjItMjkuODY3IDExOC42MTMtMjkuNDQtMzMuMjgtNzEuNjgtNTQuNjEzLTExOS40NjctNTQuNjEzLTExLjUyIDAtMjMuMDQwIDEuMjgtMzMuNzA3IDMuODQgNS45NzMgOS44MTMgOS44MTMgMjAuOTA3IDExLjUyIDMyLjg1MyAwLjQyNyAyLjk4NyAwLjQyNyA1LjU0NyAwLjg1MyA4LjEwNyA3LjI1My0xLjI4IDE0LjA4MC0yLjEzMyAyMS4zMzMtMi4xMzMgNjQuODUzIDAgMTE3LjMzMyA1Mi40OCAxMTcuMzMzIDExNy4zMzNzLTUyLjQ4IDExNy4zMzMtMTE3LjMzMyAxMTcuMzMzYy0yOC41ODcgMC01Ni4zMi0xMC42NjctNzguMDgwLTMwLjcybC0yOC41ODctMjUuNi0yOC41ODcgMjUuNmMtMjEuNzYgMjAuMDUzLTQ5LjQ5MyAzMC43Mi03OC4wODAgMzAuNzItNjQuODUzIDAtMTE3LjMzMy01Mi40OC0xMTcuMzMzLTExNy4zMzMgMC01Ny4xNzMgNDAuOTYtMTA0Ljk2IDk1LjE0Ny0xMTUuMmwtMzIuNDI3LTM1LjQxM2MtMjUuNiA5LjM4Ny00Ny43ODcgMjUuMTczLTY1LjI4IDQ0LjgtMTguMzQ3LTM1LjQxMy0yOS40NC03NS41Mi0yOS40NC0xMTguMTg3IDAtMy40MTMgMC40MjctNi40IDAuNDI3LTEwLjI0IDQ3Ljc4Ny03Ny42NTMgMTMzLjU0Ny0xMTcuNzYgMjU1LjU3My0xMTcuNzYgMTIyLjg4IDAgMjA4LjIxMyAzOC44MjcgMjU1LjE0NyAxMTUuNjI3ek02ODIuNjY3IDU0NGMwLTQxLjM4Ny0yOC41ODctNzQuNjY3LTY0LTc0LjY2N3MtNjQgMzMuMjgtNjQgNzQuNjY3IDI4LjU4NyA3NC42NjcgNjQgNzQuNjY3IDY0LTMzLjI4IDY0LTc0LjY2N3pNNjUwLjY2NyA1ODEuMTJjMCA4Ljk2LTcuMjUzIDE2LjIxMy0xNi4yMTMgMTYuMjEzcy0xNS43ODctNy4yNTMtMTUuNzg3LTE2LjIxMyA3LjI1My0xNi4yMTMgMTYuMjEzLTE2LjIxMyAxNS43ODcgNy42OCAxNS43ODcgMTYuMjEzek00NjkuMzMzIDU0NGMwLTQxLjM4Ny0yOC41ODctNzQuNjY3LTY0LTc0LjY2N3MtNjQgMzMuMjgtNjQgNzQuNjY3IDI4LjU4NyA3NC42NjcgNjQgNzQuNjY3IDY0LTMzLjI4IDY0LTc0LjY2N3pNNDM3LjMzMyA1ODEuMTJjMCA4Ljk2LTcuMjUzIDE2LjIxMy0xNi4yMTMgMTYuMjEzcy0xNS43ODctNy4yNTMtMTUuNzg3LTE2LjIxMyA3LjI1My0xNi4yMTMgMTYuMjEzLTE2LjIxMyAxNS43ODcgNy42OCAxNS43ODcgMTYuMjEzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5NDU7IiBnbHlwaC1uYW1lPSJoZWxwX2NlbnRlcl9ibGFja18yNGRwIiBkPSJNODEwLjY2NyA4MzJoLTU5Ny4zMzNjLTQ2LjkzMyAwLTg1LjMzMy0zOC40LTg1LjMzMy04NS4zMzN2LTU5Ny4zMzNjMC00Ni45MzMgMzguNC04NS4zMzMgODUuMzMzLTg1LjMzM2g1OTcuMzMzYzQ2LjkzMyAwIDg1LjMzMyAzOC40IDg1LjMzMyA4NS4zMzN2NTk3LjMzM2MwIDQ2LjkzMy0zOC40IDg1LjMzMy04NS4zMzMgODUuMzMzek01MTIuNDI3IDE5MmMtMjkuODY3IDAtNTMuNzYgMjMuODkzLTUzLjc2IDUzLjc2IDAgMzAuMjkzIDIzLjg5MyA1My4zMzMgNTMuNzYgNTMuMzMzIDMwLjI5MyAwIDUzLjMzMy0yMy4wNDAgNTMuMzMzLTUzLjMzMy0wLjQyNy0yOS40NC0yMy4wNDAtNTMuNzYtNTMuMzMzLTUzLjc2ek02NDAuODUzIDUwNy43MzNjLTMyLjQyNy00Ny4zNi02My4xNDctNjIuMjkzLTc5Ljc4Ny05Mi41ODctNC4yNjctNy42OC02LjgyNy0xMy42NTMtOC4xMDctMjYuODgtMi4xMzMtMTkuMi0xOS4yLTMzLjI4LTM4LjQtMzMuMjhoLTIuNTZjLTIyLjE4NyAwLTM5LjY4IDE4Ljc3My0zNy41NDcgNDAuOTYgMS4yOCAxNC41MDcgNC42OTMgMjkuNDQgMTIuOCA0My45NDcgMjAuOTA3IDM3LjEyIDYwLjU4NyA1OS4zMDcgODMuNjI3IDkyLjE2IDI0LjMyIDM0LjU2IDEwLjY2NyA5OS40MTMtNTguNDUzIDk5LjQxMy0zMC4yOTMgMC01MC4zNDctMTUuMzYtNjIuNzItMzMuNzA3LTEwLjY2Ny0xNS4zNi0yOS40NC0yMi42MTMtNDYuOTMzLTE1LjM2djBjLTIyLjYxMyA4Ljk2LTMwLjcyIDM2LjI2Ny0xNy4wNjcgNTUuODkzIDI2LjAyNyAzNy45NzMgNjkuNTQ3IDY1LjcwNyAxMjUuODY3IDY1LjcwNyA2My4xNDcgMCAxMDYuMjQtMjguNTg3IDEyOC40MjctNjQuODUzIDE4Ljc3My0zMC43MiAyOS44NjctODguMzIgMC44NTMtMTMxLjQxM3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTQ2OyIgZ2x5cGgtbmFtZT0iaW1wb3J0X2NvbnRhY3RzX2JsYWNrXzI0ZHAiIGQ9Ik03NDYuNjY3IDc2OGMtODMuMiAwLTE3Mi44LTE3LjA2Ny0yMzQuNjY3LTY0LTYxLjg2NyA0Ni45MzMtMTUxLjQ2NyA2NC0yMzQuNjY3IDY0LTYxLjg2NyAwLTEyNy41NzMtOS4zODctMTgyLjYxMy0zMy43MDctMzEuMTQ3LTE0LjA4MC01Mi4wNTMtNDQuMzczLTUyLjA1My03OC45MzN2LTQ4MS4yOGMwLTU1LjQ2NyA1Mi4wNTMtOTYuNDI3IDEwNS44MTMtODIuNzczIDQxLjgxMyAxMC42NjcgODYuMTg3IDE1LjM2IDEyOC44NTMgMTUuMzYgNjYuNTYgMCAxMzcuMzg3LTExLjA5MyAxOTQuNTYtMzkuMjUzIDI1LjYtMTIuOCA1NC42MTMtMTIuOCA3OS43ODcgMCA1Ny4xNzMgMjguNTg3IDEyOCAzOS4yNTMgMTk0LjU2IDM5LjI1MyA0Mi42NjcgMCA4Ny4wNDAtNC42OTMgMTI4Ljg1My0xNS4zNiA1My43Ni0xNC4wODAgMTA1LjgxMyAyNi44OCAxMDUuODEzIDgyLjc3M3Y0ODEuMjhjMCAzNC41Ni0yMC45MDcgNjQuODUzLTUyLjA1MyA3OC45MzMtNTQuNjEzIDI0LjMyLTEyMC4zMiAzMy43MDctMTgyLjE4NyAzMy43MDd6TTg5NiAyMjQuODUzYzAtMjYuODgtMjQuNzQ3LTQ2LjUwNy01MS4yLTQxLjgxMy0zMiA1Ljk3My02NS4yOCA4LjUzMy05OC4xMzMgOC41MzMtNzIuNTMzIDAtMTc3LjA2Ny0yNy43MzMtMjM0LjY2Ny02NHY0OTEuMDkzYzU3LjYgMzYuMjY3IDE2Mi4xMzMgNjQgMjM0LjY2NyA2NCAzOS4yNTMgMCA3OC4wODAtMy44NCAxMTUuMi0xMS45NDcgMTkuNjI3LTQuMjY3IDM0LjEzMy0yMS43NiAzNC4xMzMtNDEuODEzdi00MDQuMDUzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5NDc7IiBnbHlwaC1uYW1lPSJpbmRldGVybWluYXRlX2NoZWNrX2JveF9ibGFja18yNGRwIiBkPSJNODEwLjY2NyA4MzJoLTU5Ny4zMzNjLTQ2LjkzMyAwLTg1LjMzMy0zOC40LTg1LjMzMy04NS4zMzN2LTU5Ny4zMzNjMC00Ni45MzMgMzguNC04NS4zMzMgODUuMzMzLTg1LjMzM2g1OTcuMzMzYzQ2LjkzMyAwIDg1LjMzMyAzOC40IDg1LjMzMyA4NS4zMzN2NTk3LjMzM2MwIDQ2LjkzMy0zOC40IDg1LjMzMy04NS4zMzMgODUuMzMzek02ODIuNjY3IDQwNS4zMzNoLTM0MS4zMzNjLTIzLjQ2NyAwLTQyLjY2NyAxOS4yLTQyLjY2NyA0Mi42NjdzMTkuMiA0Mi42NjcgNDIuNjY3IDQyLjY2N2gzNDEuMzMzYzIzLjQ2NyAwIDQyLjY2Ny0xOS4yIDQyLjY2Ny00Mi42NjdzLTE5LjItNDIuNjY3LTQyLjY2Ny00Mi42Njd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTk0ODsiIGdseXBoLW5hbWU9ImluZm9fb3V0bGluZV9ibGFja18yNGRwIiBkPSJNNDY5LjMzMyA2NjEuMzMzaDg1LjMzM3YtODUuMzMzaC04NS4zMzN6TTUxMiAyMzQuNjY3YzIzLjQ2NyAwIDQyLjY2NyAxOS4yIDQyLjY2NyA0Mi42Njd2MTcwLjY2N2MwIDIzLjQ2Ny0xOS4yIDQyLjY2Ny00Mi42NjcgNDIuNjY3cy00Mi42NjctMTkuMi00Mi42NjctNDIuNjY3di0xNzAuNjY3YzAtMjMuNDY3IDE5LjItNDIuNjY3IDQyLjY2Ny00Mi42Njd6TTUxMiA4NzQuNjY3Yy0yMzUuNTIgMC00MjYuNjY3LTE5MS4xNDctNDI2LjY2Ny00MjYuNjY3czE5MS4xNDctNDI2LjY2NyA0MjYuNjY3LTQyNi42NjcgNDI2LjY2NyAxOTEuMTQ3IDQyNi42NjcgNDI2LjY2Ny0xOTEuMTQ3IDQyNi42NjctNDI2LjY2NyA0MjYuNjY3ek01MTIgMTA2LjY2N2MtMTg4LjE2IDAtMzQxLjMzMyAxNTMuMTczLTM0MS4zMzMgMzQxLjMzM3MxNTMuMTczIDM0MS4zMzMgMzQxLjMzMyAzNDEuMzMzIDM0MS4zMzMtMTUzLjE3MyAzNDEuMzMzLTM0MS4zMzMtMTUzLjE3My0zNDEuMzMzLTM0MS4zMzMtMzQxLjMzM3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTQ5OyIgZ2x5cGgtbmFtZT0ibGl2ZV9oZWxwX2JsYWNrXzI0ZHAiIGQ9Ik04MTAuNjY3IDg3NC42NjdoLTU5Ny4zMzNjLTQ3LjM2IDAtODUuMzMzLTM4LjQtODUuMzMzLTg1LjMzM3YtNTk3LjMzM2MwLTQ2LjkzMyAzOC40LTg1LjMzMyA4NS4zMzMtODUuMzMzaDE3MC42NjdsOTcuNzA3LTk3LjcwN2MxNi42NC0xNi42NCA0My41Mi0xNi42NCA2MC4xNiAwbDk4LjEzMyA5Ny43MDdoMTcwLjY2N2M0Ni45MzMgMCA4NS4zMzMgMzguNCA4NS4zMzMgODUuMzMzdjU5Ny4zMzNjMCA0Ni45MzMtMzguNCA4NS4zMzMtODUuMzMzIDg1LjMzM3pNNTU0LjY2NyAxOTJoLTg1LjMzM3Y4NS4zMzNoODUuMzMzdi04NS4zMzN6TTY0Mi45ODcgNTIyLjY2N2wtMzguNC0zOS4yNTNjLTI0Ljc0Ny0yNS4xNzMtNDIuMjQtNDYuOTMzLTQ3Ljc4Ny04Ny44OTMtMi41Ni0xOC4zNDctMTcuNDkzLTMyLjQyNy0zNi4yNjctMzIuNDI3aC0xMy4yMjdjLTIyLjE4NyAwLTM5LjI1MyAxOS42MjctMzYuMjY3IDQxLjgxMyA0LjY5MyAzOC44MjcgMjIuNjEzIDczLjM4NyA0OC42NCA5OS44NGw1Mi45MDcgNTMuNzZjMTUuMzYgMTUuMzYgMjQuNzQ3IDM2LjY5MyAyNC43NDcgNjAuMTYgMCA0Ni45MzMtMzguNCA4NS4zMzMtODUuMzMzIDg1LjMzMy0zNy4xMiAwLTY5LjEyLTI0LjMyLTgwLjY0LTU3LjYtNS41NDctMTUuNzg3LTE4Ljc3My0yNy4zMDctMzUuNDEzLTI3LjMwN2gtMTIuOGMtMjQuNzQ3IDAtNDEuODEzIDIzLjg5My0zNC45ODcgNDcuNzg3IDIwLjkwNyA3MC44MjcgODYuMTg3IDEyMi40NTMgMTYzLjg0IDEyMi40NTMgOTQuMjkzIDAgMTcwLjY2Ny03Ni4zNzMgMTcwLjY2Ny0xNzAuNjY3IDAtMzcuNTQ3LTE1LjM2LTcxLjY4LTM5LjY4LTk2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5NGE7IiBnbHlwaC1uYW1lPSJtYXJrX2NoYXRfcmVhZF9ibGFja18yNGRwIiBkPSJNNzcwLjEzMyAxMzYuOTZjLTE2LjY0LTE2LjY0LTQzLjUyLTE2LjY0LTYwLjE2IDBsLTkwLjQ1MyA5MC40NTNjLTE2LjY0IDE2LjY0LTE2LjY0IDQzLjUyIDAgNjAuMTZ2MGMxNi42NCAxNi42NCA0My41MiAxNi42NCA2MC4xNiAwbDYwLjE2LTYwLjE2IDE1MS4wNDAgMTUxLjA0MGMxNi42NCAxNi42NCA0My41MiAxNi42NCA2MC4xNiAwdjBjMTYuNjQtMTYuNjQgMTYuNjQtNDMuNTIgMC02MC4xNmwtMTgwLjkwNy0xODEuMzMzek01MTIgMjM0LjY2N2MwIDE2NS4xMiAxMzMuNTQ3IDI5OC42NjcgMjk4LjY2NyAyOTguNjY3IDQ2LjA4MCAwIDg5LjE3My0xMC42NjcgMTI4LTI5LjAxM3YyODUuMDEzYzAgNDYuOTMzLTM4LjQgODUuMzMzLTg1LjMzMyA4NS4zMzNoLTY4Mi42NjdjLTQ2LjkzMyAwLTg1LjMzMy0zOC40LTg1LjMzMy04NS4zMzN2LTc2OGwxNzAuNjY3IDE3MC42NjdoMjU2YzAgNy4yNTMgMC40MjcgMTQuMDgwIDEuMjggMjEuMzMzLTAuODUzIDcuMjUzLTEuMjggMTQuMDgwLTEuMjggMjEuMzMzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5NGI7IiBnbHlwaC1uYW1lPSJtYXJrX2NoYXRfdW5yZWFkX2JsYWNrXzI0ZHAiIGQ9Ik05MzguNjY3IDY2Mi4xODd2LTM4NC44NTNjMC00Ni45MzMtMzguNC04NS4zMzMtODUuMzMzLTg1LjMzM2gtNTk3LjMzM2wtMTcwLjY2Ny0xNzAuNjY3djc2OGMwIDQ2LjkzMyAzOC40IDg1LjMzMyA4NS4zMzMgODUuMzMzaDQzMC45MzNjLTIuNTYtMTMuNjUzLTQuMjY3LTI4LjE2LTQuMjY3LTQyLjY2NyAwLTExNy43NiA5NS41NzMtMjEzLjMzMyAyMTMuMzMzLTIxMy4zMzMgNDguMjEzIDAgOTIuMTYgMTYuNjQgMTI4IDQzLjUyek02ODIuNjY3IDgzMmMwLTcwLjgyNyA1Ny4xNzMtMTI4IDEyOC0xMjhzMTI4IDU3LjE3MyAxMjggMTI4LTU3LjE3MyAxMjgtMTI4IDEyOC0xMjgtNTcuMTczLTEyOC0xMjh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTk0YzsiIGdseXBoLW5hbWU9Im1pc2NlbGxhbmVvdXNfc2VydmljZXNfYmxhY2tfMjRkcCIgZD0iTTYwNC41ODcgMzc1LjA0MGw1OS43MzMgMTAzLjI1M2MzLjg0IDYuNCAyLjEzMyAxNC41MDctMy40MTMgMTkuMmwtNjMuMTQ3IDQ5LjQ5M2MxLjI4IDkuMzg3IDIuMTMzIDE5LjIgMi4xMzMgMjkuMDEzcy0wLjg1MyAxOS42MjctMi4xMzMgMjkuNDRsNjMuMTQ3IDQ5LjQ5M2M1LjU0NyA0LjY5MyA3LjI1MyAxMi44IDMuNDEzIDE5LjJsLTU5LjczMyAxMDMuMjUzYy0zLjg0IDYuNC0xMS41MiA4Ljk2LTE4LjM0NyA2LjRsLTc0LjI0LTI5Ljg2N2MtMTUuMzYgMTEuOTQ3LTMyIDIxLjc2LTUwLjM0NyAyOS40NGwtMTEuMDkzIDc4LjkzM2MtMS4yOCA2LjgyNy03LjY4IDEyLjM3My0xNC45MzMgMTIuMzczaC0xMTkuNDY3Yy03LjI1MyAwLTEzLjY1My01LjU0Ny0xNC45MzMtMTIuOGwtMTEuMDkzLTc4LjkzM2MtMTcuOTItNy42OC0zNC45ODctMTcuNDkzLTUwLjM0Ny0yOS40NGwtNzQuMjQgMjkuODY3Yy02LjgyNyAyLjU2LTE0LjUwNyAwLTE4LjM0Ny02LjRsLTU5LjczMy0xMDMuMjUzYy0zLjg0LTYuNC0yLjEzMy0xNC41MDcgMy40MTMtMTkuMmw2My4xNDctNDkuNDkzYy0xLjI4LTkuMzg3LTIuMTMzLTE5LjItMi4xMzMtMjkuMDEzczAuODUzLTE5LjYyNyAyLjEzMy0yOS40NGwtNjMuMTQ3LTQ5LjQ5M2MtNS41NDctNC42OTMtNy4yNTMtMTIuOC0zLjQxMy0xOS4ybDU5LjczMy0xMDMuMjUzYzMuODQtNi40IDExLjUyLTguOTYgMTguMzQ3LTYuNGw3NC4yNCAyOS44NjdjMTUuMzYtMTEuOTQ3IDMyLTIxLjc2IDUwLjM0Ny0yOS40NGwxMS4wOTMtNzguOTMzYzEuMjgtNi44MjcgNy42OC0xMi4zNzMgMTQuOTMzLTEyLjM3M2gxMTkuNDY3YzcuMjUzIDAgMTMuNjUzIDUuNTQ3IDE0LjkzMyAxMi44bDExLjA5MyA3OC45MzNjMTcuOTIgNy42OCAzNC45ODcgMTcuNDkzIDUwLjM0NyAyOS40NGw3NC4yNC0yOS44NjdjNi44MjctMi41NiAxNC41MDcgMCAxOC4zNDcgNi40ek0zNzUuODkzIDQ5MC42NjdjLTQ2LjkzMyAwLTg1LjMzMyAzOC40LTg1LjMzMyA4NS4zMzNzMzguNCA4NS4zMzMgODUuMzMzIDg1LjMzMyA4NS4zMzMtMzguNCA4NS4zMzMtODUuMzMzYzAtNDYuOTMzLTM4LjQtODUuMzMzLTg1LjMzMy04NS4zMzN6TTkzNS4yNTMgMTYzLjQxM2wtNDAuOTYgMzEuNTczYzAuODUzIDUuOTczIDEuNzA3IDEyLjM3MyAxLjcwNyAxOC43NzNzLTAuNDI3IDEyLjgtMS43MDcgMTguNzczbDQwLjUzMyAzMS41NzNjMy40MTMgMi45ODcgNC42OTMgOC4xMDcgMi4xMzMgMTIuMzczbC0zOC40IDY2LjEzM2MtMi4xMzMgNC4yNjctNy4yNTMgNS41NDctMTEuOTQ3IDQuMjY3bC00Ny4zNi0xOS4yYy05LjgxMyA3LjY4LTIwLjQ4IDE0LjA4MC0zMi40MjcgMTguNzczbC03LjI1MyA1MC4zNDdjLTAuNDI3IDUuMTItNC42OTMgOC41MzMtOC45NiA4LjUzM2gtNzYuMzczYy00LjY5MyAwLTguOTYtMy40MTMtOS4zODctOC4xMDdsLTcuMjUzLTUwLjM0N2MtMTEuNTItNS4xMi0yMi42MTMtMTEuMDkzLTMyLjQyNy0xOC43NzNsLTQ3LjM2IDE5LjJjLTQuMjY3IDEuNzA3LTkuMzg3IDAtMTEuOTQ3LTQuMjY3bC0zOC40LTY2LjEzM2MtMi4xMzMtNC4yNjctMS43MDctOS4zODcgMi4xMzMtMTIuMzczbDQwLjUzMy0zMS41NzNjLTAuODUzLTUuOTczLTEuMjgtMTIuMzczLTEuMjgtMTguNzczczAuNDI3LTEyLjggMS4yOC0xOC43NzNsLTQwLjUzMy0zMS41NzNjLTMuNDEzLTIuOTg3LTQuNjkzLTguMTA3LTIuMTMzLTEyLjM3M2wzOC40LTY2LjEzM2MyLjEzMy00LjI2NyA3LjI1My01LjU0NyAxMS45NDctNC4yNjdsNDcuMzYgMTkuMmM5LjgxMy03LjY4IDIwLjQ4LTE0LjA4MCAzMi40MjctMTguNzczbDcuMjUzLTUwLjM0N2MwLjg1My00LjY5MyA0LjY5My04LjEwNyA5LjM4Ny04LjEwN2g3Ni4zNzNjNC42OTMgMCA4Ljk2IDMuNDEzIDkuMzg3IDguMTA3bDcuMjUzIDUwLjM0N2MxMS41MiA1LjEyIDIyLjYxMyAxMS4wOTMgMzIgMTguNzczbDQ3Ljc4Ny0xOS4yYzQuMjY3LTEuNzA3IDkuMzg3IDAgMTEuOTQ3IDQuMjY3bDM4LjQgNjYuMTMzYzIuNTYgMy44NCAxLjI4IDguOTYtMi4xMzMgMTEuOTQ3ek03NTIuMjEzIDE1Ni41ODdjLTMxLjU3MyAwLTU3LjYgMjUuNi01Ny42IDU3LjZzMjUuNiA1Ny42IDU3LjYgNTcuNiA1Ny42LTI1LjYgNTcuNi01Ny42LTI2LjAyNy01Ny42LTU3LjYtNTcuNnoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTRkOyIgZ2x5cGgtbmFtZT0ibW9kZV9jb21tZW50X2JsYWNrXzI0ZHAiIGQ9Ik05MzguNjY3IDc4OS4zMzNjMCA0Ni45MzMtMzguNCA4NS4zMzMtODUuMzMzIDg1LjMzM2gtNjgyLjY2N2MtNDYuOTMzIDAtODUuMzMzLTM4LjQtODUuMzMzLTg1LjMzM3YtNTEyYzAtNDYuOTMzIDM4LjQtODUuMzMzIDg1LjMzMy04NS4zMzNoNTk3LjMzM2wxNzAuNjY3LTE3MC42Njd2NzY4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5NGU7IiBnbHlwaC1uYW1lPSJub3RlX2FkZF9ibGFja18yNGRwIiBkPSJNNjIyLjUwNyA4NDkuNDkzYy0xNi4yMTMgMTYuMjEzLTM3Ljk3MyAyNS4xNzMtNjAuNTg3IDI1LjE3M2gtMzA1LjkyYy00Ni45MzMgMC04NS4zMzMtMzguNC04NS4zMzMtODUuMzMzdi02ODIuNjY3YzAtNDYuOTMzIDM3Ljk3My04NS4zMzMgODQuOTA3LTg1LjMzM2g1MTIuNDI3YzQ2LjkzMyAwIDg1LjMzMyAzOC40IDg1LjMzMyA4NS4zMzN2NDc2LjU4N2MwIDIyLjYxMy04Ljk2IDQ0LjM3My0yNS4xNzMgNjAuMTZsLTIwNS42NTMgMjA2LjA4MHpNNjQwIDI3Ny4zMzNoLTg1LjMzM3YtODUuMzMzYzAtMjMuNDY3LTE5LjItNDIuNjY3LTQyLjY2Ny00Mi42NjdzLTQyLjY2NyAxOS4yLTQyLjY2NyA0Mi42Njd2ODUuMzMzaC04NS4zMzNjLTIzLjQ2NyAwLTQyLjY2NyAxOS4yLTQyLjY2NyA0Mi42NjdzMTkuMiA0Mi42NjcgNDIuNjY3IDQyLjY2N2g4NS4zMzN2ODUuMzMzYzAgMjMuNDY3IDE5LjIgNDIuNjY3IDQyLjY2NyA0Mi42NjdzNDIuNjY3LTE5LjIgNDIuNjY3LTQyLjY2N3YtODUuMzMzaDg1LjMzM2MyMy40NjcgMCA0Mi42NjctMTkuMiA0Mi42NjctNDIuNjY3cy0xOS4yLTQyLjY2Ny00Mi42NjctNDIuNjY3ek01NTQuNjY3IDYxOC42Njd2MTkybDIzNC42NjctMjM0LjY2N2gtMTkyYy0yMy40NjcgMC00Mi42NjcgMTkuMi00Mi42NjcgNDIuNjY3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5NGY7IiBnbHlwaC1uYW1lPSJub3RpZmljYXRpb25faW1wb3J0YW50X2JsYWNrXzI0ZHAiIGQ9Ik01MTItMjEuMzMzYzQ2LjkzMyAwIDg0LjkwNyAzNy45NzMgODQuOTA3IDg0LjkwN2gtMTY5LjgxM2MwLTQ2LjkzMyAzNy45NzMtODQuOTA3IDg0LjkwNy04NC45MDd6TTg2NS43MDcgMTc5LjYyN2wtNTUuMDQwIDU1LjA0MHYyNTZjMCAxNDIuOTMzLTEwMC42OTMgMjYyLjQtMjM0LjY2NyAyOTEuNDEzdjQ5LjkyYzAgMzUuNDEzLTI4LjU4NyA2NC02NCA2NHMtNjQtMjguNTg3LTY0LTY0di00OS45MmMtMTMzLjk3My0yOS4wMTMtMjM0LjY2Ny0xNDguNDgtMjM0LjY2Ny0yOTEuNDEzdi0yNTZsLTU1LjA0MC01NS4wNDBjLTI2Ljg4LTI2Ljg4LTguMTA3LTcyLjk2IDI5Ljg2Ny03Mi45Nmg2NDcuMjUzYzM4LjQgMCA1Ny4xNzMgNDYuMDgwIDMwLjI5MyA3Mi45NnpNNTU0LjY2NyAyNzcuMzMzaC04NS4zMzN2ODUuMzMzaDg1LjMzM3YtODUuMzMzek01NTQuNjY3IDQ5MC42NjdjMC0yMy40NjctMTkuMi00Mi42NjctNDIuNjY3LTQyLjY2N3MtNDIuNjY3IDE5LjItNDIuNjY3IDQyLjY2N3Y4NS4zMzNjMCAyMy40NjcgMTkuMiA0Mi42NjcgNDIuNjY3IDQyLjY2N3M0Mi42NjctMTkuMiA0Mi42NjctNDIuNjY3di04NS4zMzN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTk1MDsiIGdseXBoLW5hbWU9InByaW9yaXR5X2hpZ2hfYmxhY2tfMjRkcCIgZD0iTTU5Ny4zMzMgMTQ5LjMzM2MwLTQ3LjEyOC0zOC4yMDUtODUuMzMzLTg1LjMzMy04NS4zMzNzLTg1LjMzMyAzOC4yMDUtODUuMzMzIDg1LjMzM2MwIDQ3LjEyOCAzOC4yMDUgODUuMzMzIDg1LjMzMyA4NS4zMzNzODUuMzMzLTM4LjIwNSA4NS4zMzMtODUuMzMzek01MTIgODMyYy00Ni45MzMgMC04NS4zMzMtMzguNC04NS4zMzMtODUuMzMzdi0zNDEuMzMzYzAtNDYuOTMzIDM4LjQtODUuMzMzIDg1LjMzMy04NS4zMzNzODUuMzMzIDM4LjQgODUuMzMzIDg1LjMzM3YzNDEuMzMzYzAgNDYuOTMzLTM4LjQgODUuMzMzLTg1LjMzMyA4NS4zMzN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTk1MTsiIGdseXBoLW5hbWU9InByaXZhY3lfdGlwX2JsYWNrXzI0ZHAiIGQ9Ik0xNzguNzczIDc2OS4yOGMtMzAuNzItMTMuNjUzLTUwLjc3My00NC4zNzMtNTAuNzczLTc4LjA4MHYtMjAwLjUzM2MwLTIzNi44IDE2My44NC00NTguMjQgMzg0LTUxMiAyMjAuMTYgNTMuNzYgMzg0IDI3NS4yIDM4NCA1MTJ2MjAwLjUzM2MwIDMzLjcwNy0yMC4wNTMgNjQuNDI3LTUwLjc3MyA3OC4wODBsLTI5OC42NjcgMTMyLjY5M2MtMjIuMTg3IDkuODEzLTQ3LjM2IDkuODEzLTY5LjEyIDBsLTI5OC42NjctMTMyLjY5M3pNNTEyIDY2MS4zMzN2MGMyMy40NjcgMCA0Mi42NjctMTkuMiA0Mi42NjctNDIuNjY3djBjMC0yMy40NjctMTkuMi00Mi42NjctNDIuNjY3LTQyLjY2N3YwYy0yMy40NjcgMC00Mi42NjcgMTkuMi00Mi42NjcgNDIuNjY3djBjMCAyMy40NjcgMTkuMiA0Mi42NjcgNDIuNjY3IDQyLjY2N3pNNTEyIDQ5MC42Njd2MGMyMy40NjcgMCA0Mi42NjctMTkuMiA0Mi42NjctNDIuNjY3di0xNzAuNjY3YzAtMjMuNDY3LTE5LjItNDIuNjY3LTQyLjY2Ny00Mi42Njd2MGMtMjMuNDY3IDAtNDIuNjY3IDE5LjItNDIuNjY3IDQyLjY2N3YxNzAuNjY3YzAgMjMuNDY3IDE5LjIgNDIuNjY3IDQyLjY2NyA0Mi42Njd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTk1MjsiIGdseXBoLW5hbWU9InFyX2NvZGVfMl9ibGFja18yNGRwIiBkPSJNNjQwIDY0aC04NS4zMzN2ODUuMzMzaDg1LjMzM3YtODUuMzMzek01NTQuNjY3IDM2Mi42NjdoLTg1LjMzM3YtMjEzLjMzM2g4NS4zMzN2MjEzLjMzM3pNODk2IDQ0OGgtODUuMzMzdi0xNzAuNjY3aDg1LjMzM3YxNzAuNjY3ek04MTAuNjY3IDUzMy4zMzNoLTg1LjMzM3YtODUuMzMzaDg1LjMzM3Y4NS4zMzN6TTI5OC42NjcgNDQ4aC04NS4zMzN2LTg1LjMzM2g4NS4zMzN2ODUuMzMzek0yMTMuMzMzIDUzMy4zMzNoLTg1LjMzM3YtODUuMzMzaDg1LjMzM3Y4NS4zMzN6TTUxMiA3NDYuNjY3aDg1LjMzM3Y4NS4zMzNoLTg1LjMzM3YtODUuMzMzek0xOTIgNzY4di0xMjhoMTI4djEyOGgtMTI4ek0zNDEuMzMzIDU3NmgtMTcwLjY2N2MtMjMuNDY3IDAtNDIuNjY3IDE5LjItNDIuNjY3IDQyLjY2N3YxNzAuNjY3YzAgMjMuNDY3IDE5LjIgNDIuNjY3IDQyLjY2NyA0Mi42NjdoMTcwLjY2N2MyMy40NjcgMCA0Mi42NjctMTkuMiA0Mi42NjctNDIuNjY3di0xNzAuNjY3YzAtMjMuNDY3LTE5LjItNDIuNjY3LTQyLjY2Ny00Mi42Njd6TTE5MiAyNTZ2LTEyOGgxMjh2MTI4aC0xMjh6TTM0MS4zMzMgNjRoLTE3MC42NjdjLTIzLjQ2NyAwLTQyLjY2NyAxOS4yLTQyLjY2NyA0Mi42Njd2MTcwLjY2N2MwIDIzLjQ2NyAxOS4yIDQyLjY2NyA0Mi42NjcgNDIuNjY3aDE3MC42NjdjMjMuNDY3IDAgNDIuNjY3LTE5LjIgNDIuNjY3LTQyLjY2N3YtMTcwLjY2N2MwLTIzLjQ2Ny0xOS4yLTQyLjY2Ny00Mi42NjctNDIuNjY3ek03MDQgNzY4di0xMjhoMTI4djEyOGgtMTI4ek04NTMuMzMzIDU3NmgtMTcwLjY2N2MtMjMuNDY3IDAtNDIuNjY3IDE5LjItNDIuNjY3IDQyLjY2N3YxNzAuNjY3YzAgMjMuNDY3IDE5LjIgNDIuNjY3IDQyLjY2NyA0Mi42NjdoMTcwLjY2N2MyMy40NjcgMCA0Mi42NjctMTkuMiA0Mi42NjctNDIuNjY3di0xNzAuNjY3YzAtMjMuNDY3LTE5LjItNDIuNjY3LTQyLjY2Ny00Mi42Njd6TTgxMC42NjcgMTQ5LjMzM3YxMjhoLTE3MC42Njd2LTg1LjMzM2g4NS4zMzN2LTEyOGgxNzAuNjY3djg1LjMzM2gtODUuMzMzek03MjUuMzMzIDQ0OGgtMTcwLjY2N3YtODUuMzMzaDE3MC42Njd2ODUuMzMzek01NTQuNjY3IDUzMy4zMzNoLTI1NnYtODUuMzMzaDg1LjMzM3YtODUuMzMzaDg1LjMzM3Y4NS4zMzNoODUuMzMzdjg1LjMzM3pNNTk3LjMzMyA1NzZ2ODUuMzMzaC04NS4zMzN2ODUuMzMzaC04NS4zMzN2LTE3MC42NjdoMTcwLjY2N3pNMjg4IDczNmgtNjR2LTY0aDY0djY0ek0yODggMjI0aC02NHYtNjRoNjR2NjR6TTgwMCA3MzZoLTY0di02NGg2NHY2NHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTUzOyIgZ2x5cGgtbmFtZT0icmFkaW9fYnV0dG9uX2NoZWNrZWRfYmxhY2tfMjRkcCIgZD0iTTUxMiA4NzQuNjY3Yy0yMzUuNTIgMC00MjYuNjY3LTE5MS4xNDctNDI2LjY2Ny00MjYuNjY3czE5MS4xNDctNDI2LjY2NyA0MjYuNjY3LTQyNi42NjcgNDI2LjY2NyAxOTEuMTQ3IDQyNi42NjcgNDI2LjY2Ny0xOTEuMTQ3IDQyNi42NjctNDI2LjY2NyA0MjYuNjY3ek01MTIgMTA2LjY2N2MtMTg4LjU4NyAwLTM0MS4zMzMgMTUyLjc0Ny0zNDEuMzMzIDM0MS4zMzNzMTUyLjc0NyAzNDEuMzMzIDM0MS4zMzMgMzQxLjMzMyAzNDEuMzMzLTE1Mi43NDcgMzQxLjMzMy0zNDEuMzMzLTE1Mi43NDctMzQxLjMzMy0zNDEuMzMzLTM0MS4zMzN6TTcyNS4zMzMgNDQ4YzAtMTE3LjgyMS05NS41MTMtMjEzLjMzMy0yMTMuMzMzLTIxMy4zMzNzLTIxMy4zMzMgOTUuNTEzLTIxMy4zMzMgMjEzLjMzM2MwIDExNy44MjEgOTUuNTEzIDIxMy4zMzMgMjEzLjMzMyAyMTMuMzMzczIxMy4zMzMtOTUuNTEzIDIxMy4zMzMtMjEzLjMzM3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTU0OyIgZ2x5cGgtbmFtZT0icmFkaW9fYnV0dG9uX3VuY2hlY2tlZF9ibGFja18yNGRwIiBkPSJNNTEyIDg3NC42NjdjLTIzNS41MiAwLTQyNi42NjctMTkxLjE0Ny00MjYuNjY3LTQyNi42NjdzMTkxLjE0Ny00MjYuNjY3IDQyNi42NjctNDI2LjY2NyA0MjYuNjY3IDE5MS4xNDcgNDI2LjY2NyA0MjYuNjY3LTE5MS4xNDcgNDI2LjY2Ny00MjYuNjY3IDQyNi42Njd6TTUxMiAxMDYuNjY3Yy0xODguNTg3IDAtMzQxLjMzMyAxNTIuNzQ3LTM0MS4zMzMgMzQxLjMzM3MxNTIuNzQ3IDM0MS4zMzMgMzQxLjMzMyAzNDEuMzMzIDM0MS4zMzMtMTUyLjc0NyAzNDEuMzMzLTM0MS4zMzMtMTUyLjc0Ny0zNDEuMzMzLTM0MS4zMzMtMzQxLjMzM3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTU1OyIgZ2x5cGgtbmFtZT0ic2V0dGluZ3Nfc3VnZ2VzdF9ibGFja18yNGRwIiBkPSJNNzY5LjcwNyA2MTkuMDkzbC0yNi44OCA1OS43MzMtNTkuNzMzIDI2Ljg4Yy0xNi42NCA3LjY4LTE2LjY0IDMxLjE0NyAwIDM4LjgyN2w1OS43MzMgMjYuODggMjYuODggNTkuNzMzYzcuNjggMTYuNjQgMzEuMTQ3IDE2LjY0IDM4LjgyNyAwbDI2Ljg4LTU5LjczMyA1OS43MzMtMjYuODhjMTYuNjQtNy42OCAxNi42NC0zMS4xNDcgMC0zOC44MjdsLTU5LjczMy0yNi44OC0yNi44OC01OS43MzNjLTcuMjUzLTE2LjY0LTMxLjE0Ny0xNi42NC0zOC44MjcgMHpNOTA3Ljk0NyA0MTcuMjhsLTEzLjY1MyAzMC43MmMtNy42OCAxNi42NC0zMS4xNDcgMTYuNjQtMzguODI3IDBsLTEzLjY1My0zMC43Mi0zMS4xNDctMTMuNjUzYy0xNi42NC03LjY4LTE2LjY0LTMxLjE0NyAwLTM4LjgyN2wzMC43Mi0xMy42NTMgMTMuNjUzLTMxLjE0N2M3LjY4LTE2LjY0IDMxLjE0Ny0xNi42NCAzOC44MjcgMGwxMy42NTMgMzAuNzIgMzEuMTQ3IDEzLjY1M2MxNi42NCA3LjY4IDE2LjY0IDMxLjE0NyAwIDM4LjgyN2wtMzAuNzIgMTQuMDgwek02OTIuOTA3IDM0Ni44OGw1Mi40OC0zOS42OGMxNy4wNjctMTIuOCAyMS43Ni0zNi42OTMgMTEuMDkzLTU1LjQ2N2wtNjkuMTItMTE5LjQ2N2MtMTAuNjY3LTE4Ljc3My0zMy43MDctMjYuNDUzLTUzLjMzMy0xNy45MmwtNjEuMDEzIDI1LjZjLTguNTMzLTUuNTQ3LTE3LjkyLTExLjA5My0yNy4zMDctMTUuNzg3bC04LjEwNy02NS43MDdjLTIuNTYtMjEuMzMzLTIwLjkwNy0zNy41NDctNDIuMjQtMzcuNTQ3aC0xMzcuODEzYy0yMS4zMzMgMC0zOS42OCAxNi4yMTMtNDIuMjQgMzcuNTQ3bC04LjEwNyA2NS43MDdjLTkuMzg3IDQuNjkzLTE4LjM0NyA5LjgxMy0yNy4zMDcgMTUuNzg3bC02MS4wMTMtMjUuNmMtMTkuNjI3LTguNTMzLTQyLjY2Ny0wLjg1My01My4zMzMgMTcuOTJsLTY5LjEyIDExOS40NjdjLTEwLjY2NyAxOC43NzMtNS45NzMgNDIuMjQgMTEuMDkzIDU1LjQ2N2w1Mi40OCAzOS42OGMwIDUuMTIgMCAxMC42NjcgMCAxNS43ODdzMCAxMC42NjcgMC40MjcgMTUuNzg3bC01Mi40OCAzOS42OGMtMTcuMDY3IDEyLjgtMjEuNzYgMzYuNjkzLTExLjA5MyA1NS40NjdsNjkuMTIgMTE5LjQ2N2MxMC42NjcgMTguNzczIDMzLjcwNyAyNi40NTMgNTMuMzMzIDE3LjkybDYxLjAxMy0yNS42YzguNTMzIDUuNTQ3IDE3LjkyIDExLjA5MyAyNy4zMDcgMTUuNzg3bDguMTA3IDY1LjcwN2MyLjEzMyAyMC45MDcgMjAuNDggMzcuMTIgNDEuODEzIDM3LjEyaDEzNy44MTNjMjEuMzMzIDAgMzkuNjgtMTYuMjEzIDQyLjI0LTM3LjU0N2w4LjEwNy02NS43MDdjOS4zODctNC42OTMgMTguMzQ3LTkuODEzIDI3LjMwNy0xNS43ODdsNjEuMDEzIDI1LjZjMTkuNjI3IDguNTMzIDQyLjY2NyAwLjg1MyA1My4zMzMtMTcuOTJsNjkuMTItMTE5LjQ2N2MxMC42NjctMTguNzczIDUuOTczLTQyLjI0LTExLjA5My01NS40NjdsLTUyLjQ4LTM5LjY4YzAuNDI3LTUuMTIgMC40MjctMTAuMjQgMC40MjctMTUuNzg3czAtMTAuMjQtMC40MjctMTUuMzZ6TTU1NC42NjcgMzYyLjY2N2MwIDcwLjgyNy01Ny4xNzMgMTI4LTEyOCAxMjhzLTEyOC01Ny4xNzMtMTI4LTEyOCA1Ny4xNzMtMTI4IDEyOC0xMjggMTI4IDU3LjE3MyAxMjggMTI4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5NTY7IiBnbHlwaC1uYW1lPSJzdGFyX2JsYWNrXzI0ZHAiIGQ9Ik01MTIgMjIzLjE0N2wxNzcuMDY3LTEwNy4wOTNjMzIuNDI3LTE5LjYyNyA3Mi4xMDcgOS4zODcgNjMuNTczIDQ2LjA4MGwtNDYuOTMzIDIwMS4zODcgMTU2LjU4NyAxMzUuNjhjMjguNTg3IDI0Ljc0NyAxMy4yMjcgNzEuNjgtMjQuMzIgNzQuNjY3bC0yMDYuMDgwIDE3LjQ5My04MC42NCAxOTAuMjkzYy0xNC41MDcgMzQuNTYtNjQgMzQuNTYtNzguNTA3IDBsLTgwLjY0LTE4OS44NjctMjA2LjA4MC0xNy40OTNjLTM3LjU0Ny0yLjk4Ny01Mi45MDctNDkuOTItMjQuMzItNzQuNjY3bDE1Ni41ODctMTM1LjY4LTQ2LjkzMy0yMDEuMzg3Yy04LjUzMy0zNi42OTMgMzEuMTQ3LTY1LjcwNyA2My41NzMtNDYuMDgwbDE3Ny4wNjcgMTA2LjY2N3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTU3OyIgZ2x5cGgtbmFtZT0ic3Rhcl9ib3JkZXJfYmxhY2tfMjRkcCIgZD0iTTgzOC40IDU3NC4yOTNsLTIwNi41MDcgMTcuOTItODAuNjQgMTg5Ljg2N2MtMTQuNTA3IDM0LjU2LTY0IDM0LjU2LTc4LjUwNyAwbC04MC42NC0xOTAuMjkzLTIwNi4wODAtMTcuNDkzYy0zNy41NDctMi45ODctNTIuOTA3LTQ5LjkyLTI0LjMyLTc0LjY2N2wxNTYuNTg3LTEzNS42OC00Ni45MzMtMjAxLjM4N2MtOC41MzMtMzYuNjkzIDMxLjE0Ny02NS43MDcgNjMuNTczLTQ2LjA4MGwxNzcuMDY3IDEwNi42NjcgMTc3LjA2Ny0xMDcuMDkzYzMyLjQyNy0xOS42MjcgNzIuMTA3IDkuMzg3IDYzLjU3MyA0Ni4wODBsLTQ2LjkzMyAyMDEuODEzIDE1Ni41ODcgMTM1LjY4YzI4LjU4NyAyNC43NDcgMTMuNjUzIDcxLjY4LTIzLjg5MyA3NC42Njd6TTUxMiAzMDIuOTMzbC0xNjAuNDI3LTk2Ljg1MyA0Mi42NjcgMTgyLjYxMy0xNDEuNjUzIDEyMi44OCAxODYuODggMTYuMjEzIDcyLjUzMyAxNzEuOTQ3IDcyLjk2LTE3Mi4zNzMgMTg2Ljg4LTE2LjIxMy0xNDEuNjUzLTEyMi44OCA0Mi42NjctMTgyLjYxMy0xNjAuODUzIDk3LjI4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5NTg7IiBnbHlwaC1uYW1lPSJzdGFyX2JvcmRlcl9wdXJwbGU1MDBfYmxhY2tfMjRkcCIgZD0iTTUxMiA1ODAuNjkzbDQwLjEwNy0xMzIuNjkzaDEyMC4zMmwtOTYuODUzLTY5LjEyIDM5LjY4LTEyOC40MjctMTAzLjI1MyA3OC41MDctMTAzLjI1My03OC41MDcgMzkuNjggMTI4LjQyNy05Ni44NTMgNjkuMTJoMTIwLjMybDQwLjEwNyAxMzIuNjkzek00MDguNzQ3IDUzMy4zMzNoLTE5MC4yOTNjLTQxLjM4NyAwLTU4LjQ1My01My4zMzMtMjQuNzQ3LTc3LjIyN2wxNTUuMzA3LTExMC45MzMtNjEuMDEzLTE5Ni42OTNjLTEyLjM3My0zOS42OCAzMy43MDctNzEuNjggNjYuNTYtNDYuNTA3bDE1Ny40NCAxMTkuNDY3IDE1Ny40NC0xMTkuODkzYzMyLjg1My0yNS4xNzMgNzguOTMzIDYuODI3IDY2LjU2IDQ2LjUwN2wtNjEuMDEzIDE5Ni42OTMgMTU1LjMwNyAxMTAuOTMzYzMzLjcwNyAyNC4zMiAxNi42NCA3Ny4yMjctMjQuNzQ3IDc3LjIyN2gtMTkwLjI5M2wtNjIuNzIgMjA2LjUwN2MtMTIuMzczIDQwLjUzMy02OS41NDcgNDAuNTMzLTgxLjQ5MyAwbC02Mi4yOTMtMjA2LjA4MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTU5OyIgZ2x5cGgtbmFtZT0ic3Rhcl9oYWxmX2JsYWNrXzI0ZHAiIGQ9Ik04MzguNCA1NzQuMjkzbC0yMDYuNTA3IDE3LjkyLTgwLjY0IDE4OS44NjdjLTE0LjUwNyAzNC41Ni02NCAzNC41Ni03OC41MDcgMGwtODAuNjQtMTkwLjI5My0yMDYuMDgwLTE3LjQ5M2MtMzcuNTQ3LTIuOTg3LTUyLjkwNy00OS45Mi0yNC4zMi03NC42NjdsMTU2LjU4Ny0xMzUuNjgtNDYuOTMzLTIwMS4zODdjLTguNTMzLTM2LjY5MyAzMS4xNDctNjUuNzA3IDYzLjU3My00Ni4wODBsMTc3LjA2NyAxMDYuNjY3IDE3Ny4wNjctMTA3LjA5M2MzMi40MjctMTkuNjI3IDcyLjEwNyA5LjM4NyA2My41NzMgNDYuMDgwbC00Ni45MzMgMjAxLjgxMyAxNTYuNTg3IDEzNS42OGMyOC41ODcgMjQuNzQ3IDEzLjY1MyA3MS42OC0yMy44OTMgNzQuNjY3ek01MTIgMzAyLjkzM3YzOTYuOGw3Mi45Ni0xNzIuMzczIDE4Ni44OC0xNi4yMTMtMTQxLjY1My0xMjIuODggNDIuNjY3LTE4Mi42MTMtMTYwLjg1MyA5Ny4yOHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTVhOyIgZ2x5cGgtbmFtZT0ic3Rhcl9vdXRsaW5lX2JsYWNrXzI0ZHAiIGQ9Ik04MzguNCA1NzQuMjkzbC0yMDYuNTA3IDE3LjkyLTgwLjY0IDE4OS44NjdjLTE0LjUwNyAzNC41Ni02NCAzNC41Ni03OC41MDcgMGwtODAuNjQtMTkwLjI5My0yMDYuMDgwLTE3LjQ5M2MtMzcuNTQ3LTIuOTg3LTUyLjkwNy00OS45Mi0yNC4zMi03NC42NjdsMTU2LjU4Ny0xMzUuNjgtNDYuOTMzLTIwMS4zODdjLTguNTMzLTM2LjY5MyAzMS4xNDctNjUuNzA3IDYzLjU3My00Ni4wODBsMTc3LjA2NyAxMDYuNjY3IDE3Ny4wNjctMTA3LjA5M2MzMi40MjctMTkuNjI3IDcyLjEwNyA5LjM4NyA2My41NzMgNDYuMDgwbC00Ni45MzMgMjAxLjgxMyAxNTYuNTg3IDEzNS42OGMyOC41ODcgMjQuNzQ3IDEzLjY1MyA3MS42OC0yMy44OTMgNzQuNjY3ek01MTIgMzAyLjkzM2wtMTYwLjQyNy05Ni44NTMgNDIuNjY3IDE4Mi42MTMtMTQxLjY1MyAxMjIuODggMTg2Ljg4IDE2LjIxMyA3Mi41MzMgMTcxLjk0NyA3Mi45Ni0xNzIuMzczIDE4Ni44OC0xNi4yMTMtMTQxLjY1My0xMjIuODggNDIuNjY3LTE4Mi42MTMtMTYwLjg1MyA5Ny4yOHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTViOyIgZ2x5cGgtbmFtZT0ic3Rhcl9wdXJwbGU1MDBfYmxhY2tfMjRkcCIgZD0iTTUxMiA1ODAuNjkzbDQwLjEwNy0xMzIuNjkzaDEyMC4zMmwtOTYuODUzLTY5LjEyIDM5LjY4LTEyOC40MjctMTAzLjI1MyA3OC41MDctMTAzLjI1My03OC41MDcgMzkuNjggMTI4LjQyNy05Ni44NTMgNjkuMTJoMTIwLjMybDQwLjEwNyAxMzIuNjkzek00MDguNzQ3IDUzMy4zMzNoLTE5MC4yOTNjLTQxLjM4NyAwLTU4LjQ1My01My4zMzMtMjQuNzQ3LTc3LjIyN2wxNTUuMzA3LTExMC45MzMtNjEuMDEzLTE5Ni42OTNjLTEyLjM3My0zOS42OCAzMy43MDctNzEuNjggNjYuNTYtNDYuNTA3bDE1Ny40NCAxMTkuNDY3IDE1Ny40NC0xMTkuODkzYzMyLjg1My0yNS4xNzMgNzguOTMzIDYuODI3IDY2LjU2IDQ2LjUwN2wtNjEuMDEzIDE5Ni42OTMgMTU1LjMwNyAxMTAuOTMzYzMzLjcwNyAyNC4zMiAxNi42NCA3Ny4yMjctMjQuNzQ3IDc3LjIyN2gtMTkwLjI5M2wtNjIuNzIgMjA2LjUwN2MtMTIuMzczIDQwLjUzMy02OS41NDcgNDAuNTMzLTgxLjQ5MyAwbC02Mi4yOTMtMjA2LjA4MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTVjOyIgZ2x5cGgtbmFtZT0ic3VwcG9ydF9hZ2VudF9ibGFja18yNGRwIiBkPSJNODk2IDQzOC42MTNjMCAyMzQuMjQtMTgxLjc2IDM5My4zODctMzg0IDM5My4zODctMjAwLjEwNyAwLTM4NC0xNTUuNzMzLTM4NC0zOTUuOTQ3LTI1LjYtMTQuNTA3LTQyLjY2Ny00MS44MTMtNDIuNjY3LTczLjM4N3YtODUuMzMzYzAtNDYuOTMzIDM4LjQtODUuMzMzIDg1LjMzMy04NS4zMzN2MGMyMy40NjcgMCA0Mi42NjcgMTkuMiA0Mi42NjcgNDIuNjY3djIwNS4yMjdjMCAxNjMuNDEzIDEyNS44NjcgMzA2LjM0NyAyODkuMjggMzExLjA0MCAxNjguOTYgNS4xMiAzMDguMDUzLTEzMC41NiAzMDguMDUzLTI5OC42Njd2LTMwMi45MzNoLTI5OC42NjdjLTIzLjQ2NyAwLTQyLjY2Ny0xOS4yLTQyLjY2Ny00Mi42Njd2MGMwLTIzLjQ2NyAxOS4yLTQyLjY2NyA0Mi42NjctNDIuNjY3aDI5OC42NjdjNDYuOTMzIDAgODUuMzMzIDM4LjQgODUuMzMzIDg1LjMzM3Y1Mi4wNTNjMjUuMTczIDEzLjIyNyA0Mi42NjcgMzkuMjUzIDQyLjY2NyA2OS45NzN2OTguMTMzYzAgMjkuODY3LTE3LjQ5MyA1NS44OTMtNDIuNjY3IDY5LjEyek00MjYuNjY3IDQwNS4zMzNjMC0yMy41NjQtMTkuMTAzLTQyLjY2Ny00Mi42NjctNDIuNjY3cy00Mi42NjcgMTkuMTAzLTQyLjY2NyA0Mi42NjdjMCAyMy41NjQgMTkuMTAzIDQyLjY2NyA0Mi42NjcgNDIuNjY3czQyLjY2Ny0xOS4xMDMgNDIuNjY3LTQyLjY2N3pNNjgyLjY2NyA0MDUuMzMzYzAtMjMuNTY0LTE5LjEwMy00Mi42NjctNDIuNjY3LTQyLjY2N3MtNDIuNjY3IDE5LjEwMy00Mi42NjcgNDIuNjY3YzAgMjMuNTY0IDE5LjEwMyA0Mi42NjcgNDIuNjY3IDQyLjY2N3M0Mi42NjctMTkuMTAzIDQyLjY2Ny00Mi42Njd6TTc2OCA0ODkuMzg3Yy0yMC40OCAxMjEuNi0xMjYuMjkzIDIxNC42MTMtMjUzLjg2NyAyMTQuNjEzLTEyOS4yOCAwLTI2OC4zNzMtMTA3LjA5My0yNTcuMjgtMjc1LjIgMTA1LjM4NyA0My4wOTMgMTg0Ljc0NyAxMzYuOTYgMjA3LjM2IDI1MS4zMDcgNTUuODkzLTExMi4yMTMgMTcwLjY2Ny0xODkuNDQgMzAzLjc4Ny0xOTAuNzJ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTk1ZDsiIGdseXBoLW5hbWU9InN5bmNfYmxhY2tfMjRkcCIgZD0iTTUxMiA3ODkuMzMzdjc2LjM3M2MwIDE5LjItMjMuMDQwIDI4LjU4Ny0zNi4yNjcgMTQuOTMzbC0xMTkuNDY3LTExOS4wNDBjLTguNTMzLTguNTMzLTguNTMzLTIxLjc2IDAtMzAuMjkzbDExOS4wNDAtMTE5LjA0MGMxMy42NTMtMTMuMjI3IDM2LjY5My0zLjg0IDM2LjY5MyAxNS4zNnY3Ni4zNzNjMTQxLjIyNyAwIDI1Ni0xMTQuNzczIDI1Ni0yNTYgMC0zMy43MDctNi40LTY2LjU2LTE4Ljc3My05Ni02LjQtMTUuMzYtMS43MDctMzIuODUzIDkuODEzLTQ0LjM3MyAyMS43Ni0yMS43NiA1OC40NTMtMTQuMDgwIDY5Ljk3MyAxNC41MDcgMTUuNzg3IDM4LjgyNyAyNC4zMiA4MS40OTMgMjQuMzIgMTI1Ljg2NyAwIDE4OC41ODctMTUyLjc0NyAzNDEuMzMzLTM0MS4zMzMgMzQxLjMzM3pNNTEyIDE5MmMtMTQxLjIyNyAwLTI1NiAxMTQuNzczLTI1NiAyNTYgMCAzMy43MDcgNi40IDY2LjU2IDE4Ljc3MyA5NiA2LjQgMTUuMzYgMS43MDcgMzIuODUzLTkuODEzIDQ0LjM3My0yMS43NiAyMS43Ni01OC40NTMgMTQuMDgwLTY5Ljk3My0xNC41MDctMTUuNzg3LTM4LjgyNy0yNC4zMi04MS40OTMtMjQuMzItMTI1Ljg2NyAwLTE4OC41ODcgMTUyLjc0Ny0zNDEuMzMzIDM0MS4zMzMtMzQxLjMzM3YtNzYuMzczYzAtMTkuMiAyMy4wNDAtMjguNTg3IDM2LjI2Ny0xNC45MzNsMTE5LjA0MCAxMTkuMDQwYzguNTMzIDguNTMzIDguNTMzIDIxLjc2IDAgMzAuMjkzbC0xMTkuMDQwIDExOS4wNDBjLTEzLjIyNyAxMy4yMjctMzYuMjY3IDMuODQtMzYuMjY3LTE1LjM2di03Ni4zNzN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTk1ZTsiIGdseXBoLW5hbWU9InRhc2tfYWx0X2JsYWNrXzI0ZHAiIGQ9Ik05MDguMzczIDcwOC42OTNsLTQyNi42NjctNDI2LjY2N2MtMTYuNjQtMTYuNjQtNDMuNTItMTYuNjQtNjAuMTYgMGwtMTIwLjc0NyAxMjAuNzQ3Yy0xNi42NCAxNi42NC0xNi42NCA0My41MiAwIDYwLjE2djBjMTYuNjQgMTYuNjQgNDMuNTIgMTYuNjQgNjAuMTYgMGw5MC40NTMtOTAuNDUzIDM5Ni4zNzMgMzk2LjM3M2MxNi42NCAxNi42NCA0My41MiAxNi42NCA2MC4xNiAwdjBjMTcuMDY3LTE2LjY0IDE3LjA2Ny00My41MiAwLjQyNy02MC4xNnpNNjcyLjg1MyA4NDMuMDkzYy03Mi4xMDcgMjkuNDQtMTU0LjAyNyAzOS42OC0yMzkuMzYgMjQuMzItMTczLjY1My0zMS4xNDctMzEyLjMyLTE3MS4wOTMtMzQxLjc2LTM0NC43NDctNDguNjQtMjg4IDE5MS4xNDctNTM0LjYxMyA0NzcuNDQtNDk3LjQ5MyAxNjguOTYgMjEuNzYgMzEwLjYxMyAxNDcuNjI3IDM1NC45ODcgMzExLjg5MyAxNy4wNjcgNjIuNzIgMTguNzczIDEyMy4zMDcgOC45NiAxODAuMDUzLTUuNTQ3IDM0LjEzMy00Ny43ODcgNDcuMzYtNzIuNTMzIDIzLjA0MHYwYy05LjgxMy05LjgxMy0xNC4wODAtMjQuMzItMTEuNTItMzcuOTczIDkuMzg3LTU2Ljc0NyA1LjEyLTExNy4zMzMtMjIuMTg3LTE4MS43Ni00OS40OTMtMTE1LjYyNy0xNTcuMDEzLTIwMC41MzMtMjgyLjAyNy0yMTIuMDUzLTIxNy42LTIwLjA1My0zOTguMDgwIDE2NC4yNjctMzcxLjIgMzgzLjE0NyAxOC4zNDcgMTUxLjA0MCAxMzkuOTQ3IDI3My45MiAyOTAuNTYgMjk0LjgyNyA3My44MTMgMTAuMjQgMTQzLjc4Ny0zLjg0IDIwMy41Mi0zNC41NiAxNi42NC04LjUzMyAzNi42OTMtNS41NDcgNDkuOTIgNy42OHYwYzIwLjQ4IDIwLjQ4IDE1LjM2IDU1LjA0MC0xMC4yNCA2OC4yNjctMTEuNTIgNS4xMi0yMy4wNDAgMTAuNjY3LTM0LjU2IDE1LjM2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5NWY7IiBnbHlwaC1uYW1lPSJ0YXNrX2JsYWNrXzI0ZHAiIGQ9Ik04MjguMTYgNjQzLjg0bC0yMDYuMDgwIDIwNi4wODBjLTE1Ljc4NyAxNS43ODctMzcuNTQ3IDI0Ljc0Ny02MC4xNiAyNC43NDdoLTMwNS45MmMtNDYuOTMzIDAtODQuOTA3LTM4LjQtODQuOTA3LTg1LjMzM2wtMC40MjctNjgyLjY2N2MwLTQ2LjkzMyAzNy45NzMtODUuMzMzIDg0LjkwNy04NS4zMzNoNTEyLjQyN2M0Ni45MzMgMCA4NS4zMzMgMzguNCA4NS4zMzMgODUuMzMzdjQ3Ni41ODdjMCAyMi42MTMtOC45NiA0NC4zNzMtMjUuMTczIDYwLjU4N3pNNDM2LjQ4IDIyMi4yOTNsLTkwLjQ1MyA5MC40NTNjLTE2LjY0IDE2LjY0LTE2LjY0IDQzLjUyIDAgNjAuMTZ2MGMxNi42NCAxNi42NCA0My41MiAxNi42NCA2MC4xNiAwbDYwLjE2LTYwLjE2IDE1MS4wNDAgMTUxLjA0MGMxNi42NCAxNi42NCA0My41MiAxNi42NCA2MC4xNiAwdjBjMTYuNjQtMTYuNjQgMTYuNjQtNDMuNTIgMC02MC4xNmwtMTgwLjkwNy0xODAuOTA3Yy0xNi4yMTMtMTcuMDY3LTQzLjUyLTE3LjA2Ny02MC4xNi0wLjQyN3pNNTk3LjMzMyA1NzZjLTIzLjQ2NyAwLTQyLjY2NyAxOS4yLTQyLjY2NyA0Mi42Njd2MTkybDIzNC42NjctMjM0LjY2N2gtMTkyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5NjA7IiBnbHlwaC1uYW1lPSJ0b2dnbGVfb2ZmX2JsYWNrXzI0ZHAiIGQ9Ik03MjUuMzMzIDY2MS4zMzNoLTQyNi42NjdjLTExNy43NiAwLTIxMy4zMzMtOTUuNTczLTIxMy4zMzMtMjEzLjMzM3M5NS41NzMtMjEzLjMzMyAyMTMuMzMzLTIxMy4zMzNoNDI2LjY2N2MxMTcuNzYgMCAyMTMuMzMzIDk1LjU3MyAyMTMuMzMzIDIxMy4zMzNzLTk1LjU3MyAyMTMuMzMzLTIxMy4zMzMgMjEzLjMzM3pNMjk4LjY2NyAzMjBjLTcwLjgyNyAwLTEyOCA1Ny4xNzMtMTI4IDEyOHM1Ny4xNzMgMTI4IDEyOCAxMjggMTI4LTU3LjE3MyAxMjgtMTI4LTU3LjE3My0xMjgtMTI4LTEyOHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTYxOyIgZ2x5cGgtbmFtZT0idG9nZ2xlX29uX2JsYWNrXzI0ZHAiIGQ9Ik03MjUuMzMzIDY2MS4zMzNoLTQyNi42NjdjLTExNy43NiAwLTIxMy4zMzMtOTUuNTczLTIxMy4zMzMtMjEzLjMzM3M5NS41NzMtMjEzLjMzMyAyMTMuMzMzLTIxMy4zMzNoNDI2LjY2N2MxMTcuNzYgMCAyMTMuMzMzIDk1LjU3MyAyMTMuMzMzIDIxMy4zMzNzLTk1LjU3MyAyMTMuMzMzLTIxMy4zMzMgMjEzLjMzM3pNNzI1LjMzMyAzMjBjLTcwLjgyNyAwLTEyOCA1Ny4xNzMtMTI4IDEyOHM1Ny4xNzMgMTI4IDEyOCAxMjggMTI4LTU3LjE3MyAxMjgtMTI4LTU3LjE3My0xMjgtMTI4LTEyOHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTYyOyIgZ2x5cGgtbmFtZT0idmlld193ZWVrX2JsYWNrXzI0ZHAiIGQ9Ik0yMjcuNDEzIDEwNi42NjdoLTU2Ljc0N2MtNDYuOTMzIDAtODUuMzMzIDM4LjQtODUuMzMzIDg1LjMzM3Y1MTJjMCA0Ni45MzMgMzguNCA4NS4zMzMgODUuMzMzIDg1LjMzM2g1Ni43NDdjNDYuOTMzIDAgODUuMzMzLTM4LjQgODUuMzMzLTg1LjMzM3YtNTEyYzAtNDYuOTMzLTM3Ljk3My04NS4zMzMtODUuMzMzLTg1LjMzM3pNOTM4LjY2NyAxOTJ2NTEyYzAgNDYuOTMzLTM4LjQgODUuMzMzLTg1LjMzMyA4NS4zMzNoLTU2Ljc0N2MtNDYuOTMzIDAtODUuMzMzLTM4LjQtODUuMzMzLTg1LjMzM3YtNTEyYzAtNDYuOTMzIDM4LjQtODUuMzMzIDg1LjMzMy04NS4zMzNoNTYuNzQ3YzQ3LjM2IDAgODUuMzMzIDM4LjQgODUuMzMzIDg1LjMzM3pNNjI1LjkyIDE5MnY1MTJjMCA0Ni45MzMtMzguNCA4NS4zMzMtODUuMzMzIDg1LjMzM2gtNTYuNzQ3Yy00Ni45MzMgMC04NS4zMzMtMzguNC04NS4zMzMtODUuMzMzdi01MTJjMC00Ni45MzMgMzguNC04NS4zMzMgODUuMzMzLTg1LjMzM2g1Ni43NDdjNDYuOTMzIDAgODUuMzMzIDM4LjQgODUuMzMzIDg1LjMzM3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTYzOyIgZ2x5cGgtbmFtZT0id2FybmluZ19hbWJlcl9ibGFja18yNGRwIiBkPSJNNTEyIDcwNC40MjdsMzIxLjI4LTU1NS4wOTNoLTY0Mi41NmwzMjEuMjggNTU1LjA5M3pNMTE2LjkwNyAxOTJjLTMyLjg1My01Ni43NDcgOC4xMDctMTI4IDczLjgxMy0xMjhoNjQyLjU2YzY1LjcwNyAwIDEwNi42NjcgNzEuMjUzIDczLjgxMyAxMjhsLTMyMS4yOCA1NTUuMDkzYy0zMi44NTMgNTYuNzQ3LTExNC43NzMgNTYuNzQ3LTE0Ny42MjcgMGwtMzIxLjI4LTU1NS4wOTN6TTQ2OS4zMzMgNDkwLjY2N3YtODUuMzMzYzAtMjMuNDY3IDE5LjItNDIuNjY3IDQyLjY2Ny00Mi42NjdzNDIuNjY3IDE5LjIgNDIuNjY3IDQyLjY2N3Y4NS4zMzNjMCAyMy40NjctMTkuMiA0Mi42NjctNDIuNjY3IDQyLjY2N3MtNDIuNjY3LTE5LjItNDIuNjY3LTQyLjY2N3pNNDY5LjMzMyAyNzcuMzMzaDg1LjMzM3YtODUuMzMzaC04NS4zMzN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTk2NDsiIGdseXBoLW5hbWU9Indhcm5pbmdfYmxhY2tfMjRkcCIgZD0iTTE5MC43MiA2NGg2NDIuNTZjNjUuNzA3IDAgMTA2LjY2NyA3MS4yNTMgNzMuODEzIDEyOGwtMzIxLjI4IDU1NS4wOTNjLTMyLjg1MyA1Ni43NDctMTE0Ljc3MyA1Ni43NDctMTQ3LjYyNyAwbC0zMjEuMjgtNTU1LjA5M2MtMzIuODUzLTU2Ljc0NyA4LjEwNy0xMjggNzMuODEzLTEyOHpNNTEyIDM2Mi42NjdjLTIzLjQ2NyAwLTQyLjY2NyAxOS4yLTQyLjY2NyA0Mi42Njd2ODUuMzMzYzAgMjMuNDY3IDE5LjIgNDIuNjY3IDQyLjY2NyA0Mi42NjdzNDIuNjY3LTE5LjIgNDIuNjY3LTQyLjY2N3YtODUuMzMzYzAtMjMuNDY3LTE5LjItNDIuNjY3LTQyLjY2Ny00Mi42Njd6TTU1NC42NjcgMTkyaC04NS4zMzN2ODUuMzMzaDg1LjMzM3YtODUuMzMzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGU5NjU7IiBnbHlwaC1uYW1lPSJ3b3JrX29mZl9ibGFja18yNGRwIiBkPSJNMTc1LjM2IDg1MS42MjdjLTE2LjY0IDE2LjY0LTQzLjUyIDE2LjY0LTYwLjE2IDBzLTE2LjY0LTQzLjUyIDAtNjAuMTZsODcuMDQwLTg3LjQ2N2gtMzEuNTczYy00Ny4zNiAwLTg0LjkwNy0zNy45NzMtODQuOTA3LTg1LjMzM2wtMC40MjctNDY5LjMzM2MwLTQ3LjM2IDM3Ljk3My04NS4zMzMgODUuMzMzLTg1LjMzM2g2NzEuNTczbDU1LjA0MC01NS4wNDBjMTYuNjQtMTYuNjQgNDMuNTItMTYuNjQgNjAuMTYgMHMxNi42NCA0My41MiAwIDYwLjE2bC03ODIuMDgwIDc4Mi41MDd6TTQyNi42NjcgNzg5LjMzM2gxNzAuNjY3di04NS4zMzNoLTE1My42bDQ5NC45MzMtNDk0LjkzM3Y0MDkuNmMwIDQ3LjM2LTM3Ljk3MyA4NS4zMzMtODUuMzMzIDg1LjMzM2gtMTcwLjY2N3Y4NS4zMzNjMCA0Ny4zNi0zNy45NzMgODUuMzMzLTg1LjMzMyA4NS4zMzNoLTE3MC42NjdjLTQyLjI0IDAtNzYuOC0yOS44NjctODMuNjI3LTY5Ljk3M2w4My42MjctODMuNjI3djY4LjI2N3oiIC8+CjwvZm9udD48L2RlZnM+PC9zdmc+Cg==</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/Core.Icons.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnb3RvYm8nOwogIHNyYzogIHVybCgnLi4vLi4vLi4vLi4vY29tbW9uL2ZvbnRzL290b2JvLmVvdD84ZjN3bGonKTsKICBzcmM6ICB1cmwoJy4uLy4uLy4uLy4uL2NvbW1vbi9mb250cy9vdG9iby5lb3Q/OGYzd2xqI2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLAovKiBSb3RoZXIgT1NTIC0gVG9kbzogQ2FuJ3QgYWRkIG5ldyBpY29uIHdpdGggc3ZnIGZvcm1hdCwgaWYgLnR0ZiBleGlzdHMuIFdoeT8KICAgIHVybCgnLi4vLi4vLi4vLi4vY29tbW9uL2ZvbnRzL290b2JvLnR0Zj84ZjN3bGonKSBmb3JtYXQoJ3RydWV0eXBlJyksCkVPIFJvdGhlciBPU1MgKi8KICAgIHVybCgnLi4vLi4vLi4vLi4vY29tbW9uL2ZvbnRzL290b2JvLndvZmY/OGYzd2xqJykgZm9ybWF0KCd3b2ZmJyksCiAgICB1cmwoJy4uLy4uLy4uLy4uL2NvbW1vbi9mb250cy9vdG9iby5zdmc/OGYzd2xqI290b2JvJykgZm9ybWF0KCdzdmcnKTsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LWRpc3BsYXk6IGJsb2NrOwp9Cgoub29vZm8gewogIC8qIHVzZSAhaW1wb3J0YW50IHRvIHByZXZlbnQgaXNzdWVzIHdpdGggYnJvd3NlciBleHRlbnNpb25zIHRoYXQgY2hhbmdlIGZvbnRzICovCiAgZm9udC1mYW1pbHk6ICdvdG9ibycgIWltcG9ydGFudDsKICBzcGVhazogbm9uZTsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBmb250LXZhcmlhbnQ6IG5vcm1hbDsKICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICBsaW5lLWhlaWdodDogMTsKCiAgLyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovCiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKfQoKLm9vb2ZvLWFkZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTkwMCI7Cn0KLm9vb2ZvLWFyY2hpdmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGU5MDEiOwp9Ci5vb29mby1hcnJvd19kOmJlZm9yZSB7CiAgY29udGVudDogIlxlOTAyIjsKfQoub29vZm8tYXJyb3dfbDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTkwMyI7Cn0KLm9vb2ZvLWFycm93X3I6YmVmb3JlIHsKICBjb250ZW50OiAiXGU5MDQiOwp9Ci5vb29mby1hcnJvd19yMjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTkwNSI7Cn0KLm9vb2ZvLWFycm93X3U6YmVmb3JlIHsKICBjb250ZW50OiAiXGU5MDYiOwp9Ci5vb29mby1hdHRhY2htZW50OmJlZm9yZSB7CiAgY29udGVudDogIlxlOTA3IjsKfQoub29vZm8tYm94Y2hlY2tfZWQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGU5MDgiOwp9Ci5vb29mby1ib3hjaGVja19vb286YmVmb3JlIHsKICBjb250ZW50OiAiXGU5MDkiOwp9Ci5vb29mby1ib3hjaGVja19zZW1pOmJlZm9yZSB7CiAgY29udGVudDogIlxlOTBhIjsKfQoub29vZm8tYm94Y2hlY2s6YmVmb3JlIHsKICBjb250ZW50OiAiXGU5MGIiOwp9Ci5vb29mby1jYWxlbmRhcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTkwYyI7Cn0KLm9vb2ZvLWNsb3NlOmJlZm9yZSB7CiAgY29udGVudDogIlxlOTBkIjsKfQoub29vZm8tZGFzaGJvYXJkOmJlZm9yZSB7CiAgY29udGVudDogIlxlOTBlIjsKfQoub29vZm8tZGVsZXRlX291dGw6YmVmb3JlIHsKICBjb250ZW50OiAiXGU5MGYiOwp9Ci5vb29mby1kZWxldGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGU5MTAiOwp9Ci5vb29mby1mYXE6YmVmb3JlIHsKICBjb250ZW50OiAiXGU5MTEiOwp9Ci5vb29mby1maWx0ZXJfbGlzdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTkxMiI7Cn0KLm9vb2ZvLWZpbHRlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTkxMyI7Cn0KLm9vb2ZvLWhlbHA6YmVmb3JlIHsKICBjb250ZW50OiAiXGU5MTQiOwp9Ci5vb29mby1pbmZvOmJlZm9yZSB7CiAgY29udGVudDogIlxlOTE1IjsKfQoub29vZm8taW52aXNpYmxlOmJlZm9yZSB7CiAgY29udGVudDogIlxlOTE2IjsKfQoub29vZm8tbWVudTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTkxNyI7Cn0KLm9vb2ZvLW1vcmVfaDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTkxOCI7Cn0KLm9vb2ZvLW1vcmVfdjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTkxOSI7Cn0KLm9vb2ZvLXBkZjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTkxYSI7Cn0KLm9vb2ZvLXBob3RvX2xpYnJhcnk6YmVmb3JlIHsKICBjb250ZW50OiAiXGU5MWIiOwp9Ci5vb29mby1waG90bzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTkxYyI7Cn0KLm9vb2ZvLXByaW50OmJlZm9yZSB7CiAgY29udGVudDogIlxlOTFkIjsKfQoub29vZm8tcmFkaW9fY2hlY2tlZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTkxZSI7Cn0KLm9vb2ZvLXJhZGlvOmJlZm9yZSB7CiAgY29udGVudDogIlxlOTFmIjsKfQoub29vZm8tcmVtb3ZlOmJlZm9yZSB7CiAgY29udGVudDogIlxlOTIwIjsKfQoub29vZm8tcnBsdXM6YmVmb3JlIHsKICBjb250ZW50OiAiXGU5MjEiOwp9Ci5vb29mby1zYXZlOmJlZm9yZSB7CiAgY29udGVudDogIlxlOTIyIjsKfQoub29vZm8tc2VhcmNoOmJlZm9yZSB7CiAgY29udGVudDogIlxlOTIzIjsKfQoub29vZm8tc29ydDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTkyNCI7Cn0KLm9vb2ZvLXRleHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGU5MjUiOwp9Ci5vb29mby10aWNrZXRsaXN0OmJlZm9yZSB7CiAgY29udGVudDogIlxlOTI2IjsKfQoub29vZm8tdGltZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTkyNyI7Cn0KLm9vb2ZvLXRvZ2dsZV9vZmY6YmVmb3JlIHsKICBjb250ZW50OiAiXGU5MjgiOwp9Ci5vb29mby10b2dnbGVfb246YmVmb3JlIHsKICBjb250ZW50OiAiXGU5MjkiOwp9Ci5vb29mby12aXNpYmxlOmJlZm9yZSB7CiAgY29udGVudDogIlxlOTJhIjsKfQovKiBSb3RoZXIgT1NTICovCi5vb29mby1idWdfcmVwb3J0X2JsYWNrXzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTkzNyI7Cn0KLyogRU8gUm90aGVyIE9TUyAqLwo=</File>
        <File Location="Kernel/System/Console/Command/Admin/ServiceCatalog/AddBulkACL.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6U2VydmljZUNhdGFsb2c6OkFkZEJ1bGtBQ0w7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpCYXNlQ29tbWFuZCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlR5cGUnLAopOwoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbignQWRkIG5ldyBUaWNrZXQtVHlwZSBUaWNrZXQtU2VydmljZSBBQ0xzLicpOwoKICAgIHJldHVybjsKfQoKc3ViIFByZVJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5BZGRpbmcgbmV3IEFDTHMuLi48L3llbGxvdz5cbiIpOwogICAgbXkgJFR5cGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpOwogICAgbXkgJFNlcnZpY2VPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpOwoKICAgICMgR2V0IGFsbCBzZXJ2aWNlcy4KICAgIG15ICRTZXJ2aWNlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyktPlNlcnZpY2VMaXN0R2V0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICBTRVJWSUNFR0VUOgogICAgZm9yIG15ICRTZXJ2aWNlR2V0ICggQCRTZXJ2aWNlTGlzdCApIHsKICAgICAgICBuZXh0IFNFUlZJQ0VHRVQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkU2VydmljZUdldC0+e1RpY2tldFR5cGVJRHN9ICk7CgogICAgICAgIG15IEBUaWNrZXRUeXBlSURzID0gJFNlcnZpY2VHZXQtPntUaWNrZXRUeXBlSURzfS0+QCo7CiAgICAgICAgZm9yIG15ICRUSUQgKCBAVGlja2V0VHlwZUlEcyApIHsKCiAgICAgICAgICAgICMgQ3JlYXRlIEFjbCBpZiBjb25maWcgaXMgZW5hYmxlZAogICAgICAgICAgICAjIFdlIGNyZWF0ZSBvbmUgQWNsIHBlciBUaWNrZXQtVHlwZQogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRTZXJ2aWNlT2JqZWN0LT5VcGRhdGVUeXBTZXJ2aWNlQUNMKAogICAgICAgICAgICAgICAgVGlja2V0VHlwZUlEID0+ICRUSUQsCiAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgICA9PiAkU2VydmljZUdldC0+e1NlcnZpY2VJRH0sCiAgICAgICAgICAgICAgICBTZXJ2aWNlVmFsaWQgPT4gJFNlcnZpY2VHZXQtPntWYWxpZElEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICB9CiAgICB9CiAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5Eb25lLjwvZ3JlZW4+XG4iKTsKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Ticket/Event/SetDynamicFieldCriticalityFromService.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIEN1cnJlbnRseSwgdGhlIGNyaXRpY2FsaXR5IG9mIHRoZSBzZXJ2aWNlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgc2VydmljZSwgYnV0IHRoaXMgaGFzIG5vIGVmZmVjdC4KIyBUaGVyZWZvcmUsIHRoaXMgZXZlbnQgbW9kdWxlIGhhcyBiZWVuIGltcGxlbWVudGVkIHRoYXQgYXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBEeW5hbWljRmllbGQgQ3JpdGljYWxpdHkKIyBpbiBhIHRpY2tldCBhcyBzb29uIGFzIGEgc2VydmljZSBoYXMgYmVlbiBhc3NpZ25lZC4KCiMgUGxlYXNlIGFjdGl2YXRlIHRoZSBTeXNDb25maWcgb3B0aW9uIFNlcnZpY2U6OlNldER5bmFtaWNGaWVsZENyaXRpY2FsaXR5IGZvciB0aGlzIHB1cnBvc2UuCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpTZXREeW5hbWljRmllbGRDcml0aWNhbGl0eUZyb21TZXJ2aWNlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhEYXRhIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGZvciBteSAkTmVlZGVkIChxdyhUaWNrZXRJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17RGF0YX0tPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEgaW4gRGF0YSIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgY3VzdG9tZXIgdXNlciBkYXRhLCBzbyB0aGF0IHZhbHVlcyBjYW4gYmUgc3RvcmVkIGluIGR5bmFtaWMgZmllbGRzCiAgICBteSAlVGlja2V0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpLT5UaWNrZXRHZXQoCiAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte0RhdGF9LT57VGlja2V0SUR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISVUaWNrZXQ7CiAgICByZXR1cm4gaWYgISRUaWNrZXR7U2VydmljZUlEfTsKCiAgICBteSAkU2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyk7CgogICAgbXkgJVNlcnZpY2VEYXRhID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VHZXQoCiAgICAgICAgU2VydmljZUlEID0+ICRUaWNrZXR7U2VydmljZUlEfSwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBvYmplY3RzCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgTmFtZSA9PiAnSVRTTUNyaXRpY2FsaXR5JywKICAgICk7CgogICAgIyB1cGRhdGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmb3IgdGlja2V0CiAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFNlcnZpY2VEYXRhe0NyaXRpY2FsaXR5fSwKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Ticket/Event/SetPriorityFromCriticalityAndImpactMatrix.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIEN1cnJlbnRseSwgdGhlIGNyaXRpY2FsaXR5IG9mIHRoZSBzZXJ2aWNlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgc2VydmljZSwgYnV0IHRoaXMgaGFzIG5vIGVmZmVjdC4KIyBUaGVyZWZvcmUsIHRoaXMgZXZlbnQgbW9kdWxlIGhhcyBiZWVuIGltcGxlbWVudGVkIHRoYXQgYXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBEeW5hbWljRmllbGQgQ3JpdGljYWxpdHkKIyBpbiBhIHRpY2tldCBhcyBzb29uIGFzIGEgc2VydmljZSBoYXMgYmVlbiBhc3NpZ25lZC4KCiMgUGxlYXNlIGFjdGl2YXRlIHRoZSBTeXNDb25maWcgb3B0aW9uIFNlcnZpY2U6OlNldER5bmFtaWNGaWVsZENyaXRpY2FsaXR5IGZvciB0aGlzIHB1cnBvc2UuCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpTZXRQcmlvcml0eUZyb21Dcml0aWNhbGl0eUFuZEltcGFjdE1hdHJpeDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ0lQQWxsb2NhdGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhEYXRhIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGZvciBteSAkTmVlZGVkIChxdyhUaWNrZXRJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17RGF0YX0tPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEgaW4gRGF0YSIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGlja2V0IGRhdGEKICAgIG15ICVUaWNrZXQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldEdldCgKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgU2lsZW5jZSAgICAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIGlmICElVGlja2V0OwogICAgcmV0dXJuIGlmICFJc1N0cmluZ1dpdGhEYXRhKCAkVGlja2V0e0R5bmFtaWNGaWVsZF9JVFNNSW1wYWN0fSApIHx8ICFJc1N0cmluZ1dpdGhEYXRhKCAkVGlja2V0e0R5bmFtaWNGaWVsZF9JVFNNQ3JpdGljYWxpdHl9ICk7CgogICAgbXkgJFNlcnZpY2VPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpOwoKICAgIG15ICVTZXJ2aWNlRGF0YSA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlR2V0KAogICAgICAgIFNlcnZpY2VJRCA9PiAkVGlja2V0e1NlcnZpY2VJRH0sCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgb2JqZWN0cwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15ICRDSVBBbGxvY2F0ZU9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01DSVBBbGxvY2F0ZScpOwoKICAgIG15ICRQcmlvcml0eUlEID0gJENJUEFsbG9jYXRlT2JqZWN0LT5Qcmlvcml0eUFsbG9jYXRpb25HZXQoCiAgICAgICAgQ3JpdGljYWxpdHkgPT4gJFRpY2tldHtEeW5hbWljRmllbGRfSVRTTUNyaXRpY2FsaXR5fSwKICAgICAgICBJbXBhY3QgICAgICA9PiAkVGlja2V0e0R5bmFtaWNGaWVsZF9JVFNNSW1wYWN0fSwKICAgICk7CgogICAgcmV0dXJuIGlmICRQcmlvcml0eUlEIGVxICRUaWNrZXR7UHJpb3JpdHlJRH07CgogICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldFByaW9yaXR5U2V0KAogICAgICAgIFRpY2tldElEICAgPT4gJFBhcmFte0RhdGF9LT57VGlja2V0SUR9LAogICAgICAgIFByaW9yaXR5SUQgPT4gJFByaW9yaXR5SUQsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/Core.InputFields.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIElucHV0IEZpZWxkcwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgovKioKICogQHN1YnNlY3Rpb24gIEdlbmVyYWwKICovCgpkaXYuSW5wdXRGaWVsZF9Db250YWluZXIgewogICAgcG9zaXRpb246IHN0YXRpYzsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKZGl2LklucHV0RmllbGRfSW5wdXRDb250YWluZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbGluZS1oZWlnaHQ6IDExcHg7Cn0KCi5JbnB1dEZpZWxkX1NlYXJjaDo6LW1zLWNsZWFyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICB3aWR0aCA6IDA7CiAgICBoZWlnaHQ6IDA7Cn0KCi5JbnB1dEZpZWxkX1NlYXJjaCwKLklucHV0RmllbGRfQXV0b2NvbXBsZXRlIHsKLyogUm90aGVyIE9TUwogICAgbWluLXdpZHRoOiAxOTBweDsgKi8KICAgIG1pbi13aWR0aDogMzAwcHg7Ci8qIEVPIFJvdGhlciBPU1MgKi8KfQoKLklucHV0RmllbGRfU2VhcmNoLlNtYWxsIHsKICAgIG1pbi13aWR0aDogMTMwcHg7Cn0KCi5JbnB1dEZpZWxkX1NlYXJjaFtyZWFkb25seV06Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xCR0RhcmspOwp9CgouSW5wdXRGaWVsZF9TZWFyY2hbcmVhZG9ubHldLkVycm9yOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sVGV4dEVycik7Cn0KCi5TaWRlYmFyQ29sdW1uIC5XaWRnZXRTaW1wbGUgLklucHV0RmllbGRfU2VhcmNoLAouU2lkZWJhckNvbHVtbiAuV2lkZ2V0U2ltcGxlIC5JbnB1dEZpZWxkX0F1dG9jb21wbGV0ZSB7CiAgICBtaW4td2lkdGg6IDgwcHg7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9CgouU2lkZWJhckNvbHVtbiAuV2lkZ2V0U2ltcGxlIC5JbnB1dEZpZWxkX0NvbnRhaW5lciwKLlNpZGViYXJDb2x1bW4gLldpZGdldFNpbXBsZSAuSW5wdXRGaWVsZF9Db250YWluZXIgLklucHV0RmllbGRfSW5wdXRDb250YWluZXIsCi5TaWRlYmFyQ29sdW1uIC5XaWRnZXRTaW1wbGUgc2VsZWN0Lk1vZGVybml6ZSB7CiAgICB3aWR0aDogMTAwJTsKfQoKLldpZGdldFNldHRpbmdzRm9ybSAuSW5wdXRGaWVsZF9TZWFyY2gsCi5XaWRnZXRTZXR0aW5nc0Zvcm0gLklucHV0RmllbGRfQXV0b2NvbXBsZXRlIHsKICAgIG1pbi13aWR0aDogMHB4Owp9Cgoub29vQUNMSGlkZGVuIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKLk11bHRpVmFsdWVfVGVtcGxhdGUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9CgouUm93X0R5bmFtaWNGaWVsZCB7CiAgICBkaXNwbGF5OiBncmlkOwp9CgpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjVweCkgewogICAgZmllbGRzZXQuVGFibGVMaWtlID4gLkZpZWxkID4gLk1vZGVybml6ZSNUeXBlSUQsCiAgICBmaWVsZHNldC5UYWJsZUxpa2UgPiAuRmllbGQgPiAuTW9kZXJuaXplI0Rlc3QsCiAgICBmaWVsZHNldC5UYWJsZUxpa2UgPiAuRmllbGQgPiAuTW9kZXJuaXplI05ld1F1ZXVlSUQsCiAgICBmaWVsZHNldC5UYWJsZUxpa2UgPiAuRmllbGQgPiAuTW9kZXJuaXplI1NlcnZpY2VJRCwKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSA+IC5GaWVsZCA+IC5Nb2Rlcm5pemUjU0xBSUQsCiAgICBmaWVsZHNldC5UYWJsZUxpa2UgPiAuRmllbGQgPiAuTW9kZXJuaXplI05ld1VzZXJJRCwKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSA+IC5GaWVsZCA+IC5Nb2Rlcm5pemUjTmV3T3duZXJJRCwKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSA+IC5GaWVsZCA+IC5Nb2Rlcm5pemUjTmV3UmVzcG9uc2libGVJRCwKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSA+IC5GaWVsZCA+IC5Nb2Rlcm5pemUjU3RhbmRhcmRUZW1wbGF0ZUlELAogICAgZmllbGRzZXQuVGFibGVMaWtlID4gLkZpZWxkID4gLk1vZGVybml6ZSNOZXh0U3RhdGVJRCwKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSA+IC5GaWVsZCA+IC5Nb2Rlcm5pemUjTmV3U3RhdGVJRCwKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSA+IC5GaWVsZCA+IC5Nb2Rlcm5pemUjUHJpb3JpdHlJRCwKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSA+IC5GaWVsZCA+IC5Nb2Rlcm5pemUjTmV3UHJpb3JpdHlJRCwKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSA+IC5Sb3cgPiAuRmllbGQgPiBzZWxlY3QuTW9kZXJuaXplIHsKICAgICAgICBtaW4td2lkdGg6IDMwMHB4OwogICAgfQoKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSA+IC5GaWVsZCA+IGlucHV0Llc1MHBjLAogICAgZmllbGRzZXQuVGFibGVMaWtlID4gLlJvdyA+IC5GaWVsZCA+IGlucHV0Llc1MHBjIHsKICAgICAgICBtYXgtd2lkdGg6IDMxMHB4OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICB9CgogICAgZmllbGRzZXQuVGFibGVMaWtlIC5Sb3cgPiAuRmllbGRDZWxsID4gLkZpZWxkID4gc2VsZWN0Lk1vZGVybml6ZSwKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSAuUm93ID4gLkZpZWxkQ2VsbCA+IC5GaWVsZCA+IGlucHV0Llc3NXBjLAogICAgZmllbGRzZXQuVGFibGVMaWtlIC5Sb3cgPiAuRmllbGRDZWxsID4gLkZpZWxkID4gaW5wdXQuVzUwcGMsCiAgICBmaWVsZHNldC5UYWJsZUxpa2UgLlJvdyA+IC5GaWVsZENlbGwgPiAuRmllbGQgPiBpbnB1dFt0eXBlPSJ0ZXh0Il0sCiAgICBmaWVsZHNldC5UYWJsZUxpa2UgLkZpZWxkQ2VsbCA+IC5GaWVsZCA+IGRpdi5JbnB1dEZpZWxkX0NvbnRhaW5lciA+IGRpdi5JbnB1dEZpZWxkX0lucHV0Q29udGFpbmVyID4gLklucHV0RmllbGRfU2VhcmNoLAogICAgZmllbGRzZXQuVGFibGVMaWtlIC5GaWVsZENlbGwgPiAuRmllbGQgPiBkaXYuSW5wdXRGaWVsZF9Db250YWluZXIgPiBkaXYuSW5wdXRGaWVsZF9JbnB1dENvbnRhaW5lciA+IC5JbnB1dEZpZWxkX0F1dG9jb21wbGV0ZSB7CiAgICAgICAgbWluLXdpZHRoOiAzMDBweDsKICAgIH0KCiAgICBmaWVsZHNldC5UYWJsZUxpa2UgPiAuUm93Om5vdCguTXVsdGlDb2x1bW4pID4gLkZpZWxkQ2VsbCA+IC5GaWVsZCA+IGlucHV0Llc1MHBjIHsKICAgICAgICBtYXgtd2lkdGg6IDUwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgfQoKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSA+IC5GaWVsZCA+IGlucHV0Llc3NXBjLAogICAgZmllbGRzZXQuVGFibGVMaWtlID4gLlJvdyA+IC5GaWVsZCA+IGlucHV0Llc3NXBjIHsKICAgICAgICBtYXgtd2lkdGg6IDYyMHB4OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICB9CgogICAgZmllbGRzZXQuVGFibGVMaWtlID4gLkZpZWxkID4gaW5wdXQjU3ViamVjdCB7CiAgICAgICAgd2lkdGg6IDc1JTsKICAgICAgICBtYXgtd2lkdGg6IDYyMHB4OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICB9CgogICAgZmllbGRzZXQuVGFibGVMaWtlID4gLkZpZWxkID4gZGl2LkN1c3RvbWVyQ29udGFpbmVyLAogICAgZmllbGRzZXQuVGFibGVMaWtlID4gLkZpZWxkID4gZGl2LkNjQ3VzdG9tZXJDb250YWluZXIsCiAgICBmaWVsZHNldC5UYWJsZUxpa2UgPiAuRmllbGQgPiBkaXYuQmNjQ3VzdG9tZXJDb250YWluZXIgewogICAgICAgIHdpZHRoOiBjYWxjKCA3NSUgLSA3cHggKTsKICAgICAgICBtYXgtd2lkdGg6IDYwN3B4OwogICAgfQoKfQoKI0hlYWRlciBkaXYuSW5wdXRGaWVsZF9Db250YWluZXIgewogICAgY29sb3I6IHZhcigtLWNvbFRleHREYXJrKTsKfQoKI1Rvb2xCYXIgbGkuRXh0ZW5kZWQgZm9ybSBkaXYuSW5wdXRGaWVsZF9Db250YWluZXIgKiB7CglmbG9hdDogbm9uZTsKfQoKI1Rvb2xCYXIgZGl2LklucHV0RmllbGRfQ29udGFpbmVyIGxpIHsKICAgIGhlaWdodDogYXV0bzsKICAgIG1hcmdpbjogaW5oZXJpdDsKICAgIHdpZHRoOiBhdXRvOwp9CgojVG9vbEJhciBkaXYuSW5wdXRGaWVsZF9Db250YWluZXIgYSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBoZWlnaHQ6IGF1dG87CiAgICB0ZXh0LWluZGVudDogMDsKICAgIHdpZHRoOiBhdXRvOwp9CgojVG9vbEJhciAuSW5wdXRGaWVsZF9TZWFyY2gsCiNUb29sQmFyIC5JbnB1dEZpZWxkX0F1dG9jb21wbGV0ZSB7CiAgICBtaW4td2lkdGg6IDY1cHg7Cn0KCi5JbnB1dEZpZWxkX1NlYXJjaFtkaXNhYmxlZF0gewogICAgY29sb3I6ICNhYWE7Cn0KCmRpdi5JbnB1dEZpZWxkX0lucHV0Q29udGFpbmVyIC5JbnB1dEZpZWxkX1NlYXJjaCB7CiAgICBtYXJnaW46IDA7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KCiNDb250ZXh0U2V0dGluZ3NEaWFsb2cgZGl2LklucHV0RmllbGRfSW5wdXRDb250YWluZXIgLklucHV0RmllbGRfU2VhcmNoIHsKICAgIG1pbi13aWR0aDogMHB4Owp9CgpmaWVsZHNldC5UYWJsZUxpa2UgPiAuUm93Lk11bHRpQ29sdW1uID4gLkZpZWxkQ2VsbCA+IC5GaWVsZCA+IHNlbGVjdC5Nb2Rlcm5pemUsCmZpZWxkc2V0LlRhYmxlTGlrZSA+IC5Sb3cuTXVsdGlDb2x1bW4gPiAuRmllbGRDZWxsID4gLkZpZWxkID4gaW5wdXQuVzc1cGMsCmZpZWxkc2V0LlRhYmxlTGlrZSA+IC5Sb3cuTXVsdGlDb2x1bW4gPiAuRmllbGRDZWxsID4gLkZpZWxkID4gaW5wdXQuVzUwcGMsCmZpZWxkc2V0LlRhYmxlTGlrZSA+IC5Sb3cuTXVsdGlDb2x1bW4gPiAuRmllbGRDZWxsIC5JbnB1dEZpZWxkX0lucHV0Q29udGFpbmVyID4gaW5wdXQgewogICAgbWluLXdpZHRoOiAwICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogY2FsYyggMTAwJSAtIDdweCApOwp9CgouRHluYW1pY0ZpZWxkREIgewogICAgd2lkdGg6IGNhbGMoMTAwJSAtIDEycHgpICFpbXBvcnRhbnQ7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9CgpmaWVsZHNldC5UYWJsZUxpa2UgPiAuUm93Lk11bHRpQ29sdW1uID4gLkZpZWxkQ2VsbCAuSW5wdXRGaWVsZF9Db250YWluZXIsCmZpZWxkc2V0LlRhYmxlTGlrZSA+IC5Sb3cuTXVsdGlDb2x1bW4gPiAuRmllbGRDZWxsIC5JbnB1dEZpZWxkX0lucHV0Q29udGFpbmVyIHsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgovKi5GaWVsZENlbGwgLklucHV0RmllbGRfU2VhcmNoIHsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0qLwoKLyouTXVsdGlDb2x1bW4gPiAuRmllbGRDZWxsID4gLkZpZWxkID4gZGl2LklucHV0RmllbGRfQ29udGFpbmVyID4gZGl2LklucHV0RmllbGRfSW5wdXRDb250YWluZXIgPiAuSW5wdXRGaWVsZF9TZWFyY2gsCi5NdWx0aUNvbHVtbiA+IC5GaWVsZENlbGwgPiAuRmllbGQgPiBkaXYuSW5wdXRGaWVsZF9Db250YWluZXIgPiBkaXYuSW5wdXRGaWVsZF9JbnB1dENvbnRhaW5lciA+IC5JbnB1dEZpZWxkX0F1dG9jb21wbGV0ZSB7CiAgICBtaW4td2lkdGg6IDEwMCU7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9Ki8KCi5GaWVsZENlbGwgewogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLkZpZWxkQ2VsbCBkaXYub29vVGl0bGUgewogICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKfQoKLypkaXYuUm93LlJvd19EeW5hbWljRmllbGQgZGl2LlNpbmdsZUNvbHVtbiA+IGxhYmVsLApkaXYuUm93LlJvd19EeW5hbWljRmllbGQgZGl2LlNpbmdsZUNvbHVtbiA+IGRpdi5NdWx0aVZhbHVlSXRlbSA+IGxhYmVsLApkaXYuUm93LlJvd19EeW5hbWljRmllbGQgZGl2Lk11bHRpQ29sdW1uID4gbGFiZWwsCmRpdi5Sb3cuUm93X0R5bmFtaWNGaWVsZCBkaXYuTXVsdGlDb2x1bW4gPiBkaXYuTXVsdGlWYWx1ZUl0ZW0gPiBsYWJlbCB7CiAgICB3aWR0aDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogNXB4OwogICAgZmxvYXQ6IG5vbmU7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgZm9udC1zaXplOiAwLjllbTsKICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGxpbmUtaGVpZ2h0OiAxLjllbTsKICAgIG1pbi1oZWlnaHQ6IDE3cHg7CiAgICBwYWRkaW5nLXRvcDogMC4zZW07CiAgICBwYWRkaW5nLWJvdHRvbTogMXB4OwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZBRkFGQTsKfSovCgouQWRkUmVtb3ZlVmFsdWVSb3cgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZy1sZWZ0OiA4cHg7Cn0KCi5BZGRWYWx1ZVJvdywKLlJlbW92ZVZhbHVlUm93IHsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKZmllbGRzZXQuRHluYW1pY0ZpZWxkU2V0IHsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICB3aWR0aDogMTAwJQp9CgovKiBuZWVkZWQgZm9yIG11bHRpdmFsdWUgc2V0cyBkdWUgdG8gY3VycmVudCBkaWZmZXJlbmNlIGluIG91dGVyIHN0cnVjdHVyZSBjb21wYXJlZCB0byBzaW5nbGUgdmFsdWUgc2V0cyAqLwouTXVsdGlWYWx1ZSA+IC5GaWVsZENlbGwgPiAuRmllbGQgPiAuRHluYW1pY0ZpZWxkU2V0IHsKICAgIHdpZHRoOiAxMDAlOwp9CgouTXVsdGlWYWx1ZSAuREZTZXRPdXRlckZpZWxkIH4gLkFkZFJlbW92ZVZhbHVlUm93IHsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICBwYWRkaW5nLXRvcDogMTZweDsKfQoKYS5JbnB1dEZpZWxkX0FjdGlvbiB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGNvbG9yOiB2YXIoLS1jb2xUZXh0RGFyayk7CiAgICB0b3A6IDVweDsKfQoKYS5JbnB1dEZpZWxkX0FjdGlvbjpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tY29sSGlnaGxpZ2h0KTsKfQoKZGl2LklucHV0RmllbGRfU2VsZWN0aW9uIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDRweDsKICAgIGhlaWdodDogMTdweDsKICAgIGxpbmUtaGVpZ2h0OiAxMXB4OwogICAgdGV4dC1zaGFkb3c6IG5vbmU7Cn0KCmRpdi5JbnB1dEZpZWxkX1NlbGVjdGlvbiBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZm9udC1zaXplOiAxMXB4Owp9CgpkaXYuSW5wdXRGaWVsZF9TZWxlY3Rpb24gZGl2LlRleHQgewogICAgYmFja2dyb3VuZDogdmFyKC0tY29sQkdNZWRpdW0pOwogICAgcGFkZGluZzogMnB4IDRweDsKfQoKZGl2LklucHV0RmllbGRfU2VsZWN0aW9uIGRpdi5SZW1vdmUgewogICAgYmFja2dyb3VuZDogdmFyKC0tY29sQkdEYXJrKTsKICAgIGNvbG9yOiAjZmZmOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgouQWxyZWFkeURpc2FibGVkIGRpdi5JbnB1dEZpZWxkX1NlbGVjdGlvbiBkaXYuVGV4dCB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xCR0xpZ2h0KTsKICAgIGN1cnNvcjogZGVmYXVsdDsKfQoKLkFscmVhZHlEaXNhYmxlZCBkaXYuSW5wdXRGaWVsZF9TZWxlY3Rpb24gZGl2LlJlbW92ZSB7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICBkaXNwbGF5OiBub25lOwp9CgpkaXYuSW5wdXRGaWVsZF9TZWxlY3Rpb24gZGl2LlJlbW92ZSBhIHsKICAgIGNvbG9yOiAjZmZmOwogICAgcGFkZGluZzogMnB4IDRweDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKfQoKZGl2LklucHV0RmllbGRfTW9yZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgdG9wOiA2cHg7Cn0KCmRpdi5JbnB1dEZpZWxkX0xpc3RDb250YWluZXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgei1pbmRleDogNjEwMDsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICB0ZXh0LXNoYWRvdzogbm9uZTsKfQoKZGl2LklucHV0RmllbGRfVHJlZUNvbnRhaW5lciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sQkdEYXJrKTsKICAgIGJvcmRlci10b3A6IG5vbmU7CiAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgYm94LXNpemluZzogY29udGVudC1ib3g7CiAgICBsaW5lLWhlaWdodDogMThweDsKfQoKLkV4cGFuZFRvVG9wIGRpdi5JbnB1dEZpZWxkX1RyZWVDb250YWluZXIgewogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjY2M7CiAgICBib3JkZXItYm90dG9tOiBub25lOwp9CgpkaXYuSW5wdXRGaWVsZF9Ub29sYmFyQ29udGFpbmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbEJHTGlnaHQpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sQkdNZWRpdW0pOwogICAgYm9yZGVyLXRvcDogbm9uZTsKICAgIGxpbmUtaGVpZ2h0OiAyMXB4OwogICAgYm94LXNpemluZzogY29udGVudC1ib3g7CiAgICBtaW4taGVpZ2h0OiAyMXB4Owp9CgpkaXYuSW5wdXRGaWVsZF9Ub29sYmFyQ29udGFpbmVyIHVsIHsKICAgIHdpZHRoOiAxMDAlOwogICAgZGlzcGxheTogdGFibGU7Cn0KCmRpdi5JbnB1dEZpZWxkX1Rvb2xiYXJDb250YWluZXIgdWwgbGkgewogICAgZGlzcGxheTogdGFibGUtY2VsbDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKZGl2LklucHV0RmllbGRfVG9vbGJhckNvbnRhaW5lciB1bCBsaTphZnRlciB7CiAgICBjb2xvcjogI2JiYjsKICAgIGNvbnRlbnQ6ICJ8IjsKICAgIGZsb2F0OiByaWdodDsgCiAgICBjdXJzb3I6IGRlZmF1bHQ7Cn0KCmRpdi5JbnB1dEZpZWxkX1Rvb2xiYXJDb250YWluZXIgdWwgbGk6bGFzdC1jaGlsZDphZnRlciB7CiAgICBkaXNwbGF5OiBub25lOwp9CgouUlRMIGRpdi5JbnB1dEZpZWxkX1Rvb2xiYXJDb250YWluZXIgdWwgbGk6bGFzdC1jaGlsZDphZnRlciB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi5SVEwgZGl2LklucHV0RmllbGRfVG9vbGJhckNvbnRhaW5lciB1bCBsaTpmaXJzdC1jaGlsZDphZnRlciB7CiAgICBkaXNwbGF5OiBub25lOwp9CgpkaXYuSW5wdXRGaWVsZF9Ub29sYmFyQ29udGFpbmVyIHVsIGxpIGEgewogICAgY29sb3I6IHZhcigtLWNvbFRleHREYXJrKTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbjogMnB4IDVweDsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIGxpbmUtaGVpZ2h0OiAxNXB4Owp9CgpkaXYuSW5wdXRGaWVsZF9Ub29sYmFyQ29udGFpbmVyIGkgewogICAgY29sb3I6IHZhcigtLWNvbFRleHREYXJrKTsKfQoKZGl2LklucHV0RmllbGRfVG9vbGJhckNvbnRhaW5lciB1bCBsaSBhOmhvdmVyIHsKICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1jb2xIaWdobGlnaHQpOwogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLklucHV0RmllbGRfQ29uZmlybSwKLklucHV0RmllbGRfRmlsdGVycy5BY3RpdmUgewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi5JbnB1dEZpZWxkX0ZpbHRlcnNMaXN0IHsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWNvbEJHRGFyayk7CiAgICB6LWluZGV4OiAxNTAwOwogICAgbGluZS1oZWlnaHQ6IDEuNWVtOwogICAgd2lkdGg6IDEwMCU7CiAgICBmb250LXNpemU6IDExcHg7Cn0KCi5JbnB1dEZpZWxkX0ZpbHRlcnNMaXN0IHNwYW4gewogICAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgICBjdXJzb3I6IGRlZmF1bHQ7Cn0KCi5JbnB1dEZpZWxkX0ZpbHRlcnNMaXN0IGlucHV0W2Rpc2FibGVkXSArIHNwYW4gewogICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgY29sb3I6IHZhcigtLWNvbFRleHRMaWdodCk7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAganNUcmVlIHRoZW1lCiAqLwouanN0cmVlLUlucHV0RmllbGQgewogICAgZm9udC1zaXplOiAxMXB4OwogICAgYm9yZGVyOiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKICAgIGhlaWdodDogMTAwJTsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLW5vZGUsCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLWNoaWxkcmVuLAouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1jb250YWluZXItdWwgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgbGlzdC1zdHlsZS10eXBlOiBub25lOwogICAgbGlzdC1zdHlsZS1pbWFnZTogbm9uZTsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi5SVEwgLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtbm9kZSwKLlJUTCAuanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1jaGlsZHJlbiwKLlJUTCAuanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1jb250YWluZXItdWwgewogICAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLW5vZGUgewogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtbm9kZS5qc3RyZWUtaGlkZGVuIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLWFuY2hvciB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBjb2xvcjogdmFyKC0tY29sVGV4dERhcmspOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIHBhZGRpbmc6IDAgNHB4IDAgMXB4OwogICAgbWFyZ2luOiAwOwogICAgdmVydGljYWwtYWxpZ246IHRvcDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtYW5jaG9yOmZvY3VzIHsKICAgIG91dGxpbmU6IDA7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1hbmNob3IsCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLWFuY2hvcjpsaW5rLAouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1hbmNob3I6dmlzaXRlZCwKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtYW5jaG9yOmhvdmVyLAouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1hbmNob3I6YWN0aXZlIHsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGNvbG9yOiBpbmhlcml0Owp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1pY29uIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1pY29uOmVtcHR5IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1vY2wgewogICAgY3Vyc29yOiBwb2ludGVyOwp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1sZWFmID4gLmpzdHJlZS1vY2wgewogICAgY3Vyc29yOiBkZWZhdWx0Owp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZSAuanN0cmVlLW9wZW4gPiAuanN0cmVlLWNoaWxkcmVuIHsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZSAuanN0cmVlLWNsb3NlZCA+IC5qc3RyZWUtY2hpbGRyZW4sCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlIC5qc3RyZWUtbGVhZiA+IC5qc3RyZWUtY2hpbGRyZW4gewogICAgZGlzcGxheTogbm9uZTsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtYW5jaG9yID4gLmpzdHJlZS10aGVtZWljb24gewogICAgbWFyZ2luLXJpZ2h0OiAycHg7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLW5vLWljb25zIC5qc3RyZWUtdGhlbWVpY29uLAouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1hbmNob3IgPiAuanN0cmVlLXRoZW1laWNvbi1oaWRkZW4gewogICAgZGlzcGxheTogbm9uZTsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtcnRsIC5qc3RyZWUtYW5jaG9yIHsKICAgIHBhZGRpbmc6IDAgMXB4IDAgNHB4Owp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1ydGwgLmpzdHJlZS1hbmNob3IgPiAuanN0cmVlLXRoZW1laWNvbiB7CiAgICBtYXJnaW4tbGVmdDogMnB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1ydGwgLmpzdHJlZS1ub2RlIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1ydGwgLmpzdHJlZS1jb250YWluZXItdWwgPiAuanN0cmVlLW5vZGUgewogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1ob3ZlcmVkIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuRGlzYWJsZWQgPiAuanN0cmVlLWFuY2hvciB7CiAgICBjb2xvcjogdmFyKC0tY29sVGV4dExpZ2h0KSAhaW1wb3J0YW50OwogICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgY3Vyc29yOiBkZWZhdWx0Owp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1vcGVuLAouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1jbG9zZWQgewogICAgY3Vyc29yOiBwb2ludGVyOwp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS13aG9sZXJvdy11bCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtaW4td2lkdGg6IDEwMCU7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLXdob2xlcm93LXVsIC5qc3RyZWUtbGVhZiA+IC5qc3RyZWUtb2NsIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtd2hvbGVyb3ctdWwgLmpzdHJlZS1hbmNob3IsCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLXdob2xlcm93LXVsIC5qc3RyZWUtaWNvbiB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLXdob2xlcm93LXVsIC5qc3RyZWUtd2hvbGVyb3cgewogICAgd2lkdGg6IDEwMCU7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAwOwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICB1c2VyLXNlbGVjdDogbm9uZTsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtd2hvbGVyb3ctdWwgLmpzdHJlZS13aG9sZXJvdy1jbGlja2VkIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbEJHTWVkaXVtKTsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtd2hvbGVyb3ctdWwgLmpzdHJlZS13aG9sZXJvdzpob3ZlciwKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtd2hvbGVyb3ctdWwgLmpzdHJlZS13aG9sZXJvdy1ob3ZlcmVkLAouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1mb2N1c2VkID4gLmpzdHJlZS13aG9sZXJvdyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xIb3ZlckxpZ2h0KTsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtd2hvbGVyb3ctdWwgLmpzdHJlZS13aG9sZXJvdy1jbGlja2VkOmhvdmVyLAouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS13aG9sZXJvdy11bCAuanN0cmVlLXdob2xlcm93LWNsaWNrZWQuanN0cmVlLXdob2xlcm93LWhvdmVyZWQsCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLWZvY3VzZWQgPiAuanN0cmVlLXdob2xlcm93LWNsaWNrZWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sSG92ZXJEYXJrKTsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5EaXNhYmxlZCA+IC5qc3RyZWUtd2hvbGVyb3c6aG92ZXIsCi5qc3RyZWUtSW5wdXRGaWVsZCAuRGlzYWJsZWQgPiAuanN0cmVlLXdob2xlcm93LWhvdmVyZWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdEYXJrKTsKICAgIGN1cnNvcjogZGVmYXVsdDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5EaXNhYmxlZC5qc3RyZWUtb3BlbiA+IC5qc3RyZWUtYW5jaG9yLAouanN0cmVlLUlucHV0RmllbGQgLkRpc2FibGVkLmpzdHJlZS1jbG9zZWQgPiAuanN0cmVlLWFuY2hvciB7CiAgICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtY2xpY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwIDRweCAwIDFweCAhaW1wb3J0YW50Owp9CgouanN0cmVlLUlucHV0RmllbGQuanN0cmVlLXJ0bCAuanN0cmVlLW5vZGUgewogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQUNBUU1BQUFCNDlJNUdBQUFBQmxCTVZFVUFBQUFkSFJ2RWtDd2NBQUFBQVhSU1RsTUFRT2JZWmdBQUFBeEpSRUZVQ05kakFBTU9CZ0FBR0FBSk13UUhkUUFBQUFCSlJVNUVya0pnZ2c9PSIpOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAxcHg7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXk7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZC5qc3RyZWUtcnRsIC5qc3RyZWUtbGFzdCB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLmpzdHJlZS1ydGwgLmpzdHJlZS1vcGVuID4gLmpzdHJlZS1vY2wgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEzNXB4IC0zOXB4Owp9CgouanN0cmVlLUlucHV0RmllbGQuanN0cmVlLXJ0bCAuanN0cmVlLWNsb3NlZCA+IC5qc3RyZWUtb2NsIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0xMDNweCAtMzlweDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLmpzdHJlZS1ydGwgLmpzdHJlZS1sZWFmID4gLmpzdHJlZS1vY2wgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTcxcHggLTM5cHg7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZC5qc3RyZWUtcnRsID4gLmpzdHJlZS1uby1kb3RzIC5qc3RyZWUtbm9kZSwKLmpzdHJlZS1JbnB1dEZpZWxkLmpzdHJlZS1ydGwgPiAuanN0cmVlLW5vLWRvdHMgLmpzdHJlZS1sZWFmID4gLmpzdHJlZS1vY2wgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZC5qc3RyZWUtcnRsID4gLmpzdHJlZS1uby1kb3RzIC5qc3RyZWUtb3BlbiA+IC5qc3RyZWUtb2NsIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0zOXB4IC0zOXB4Owp9Ci5qc3RyZWUtSW5wdXRGaWVsZC5qc3RyZWUtcnRsID4gLmpzdHJlZS1uby1kb3RzIC5qc3RyZWUtY2xvc2VkID4gLmpzdHJlZS1vY2wgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTdweCAtMzlweDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtdGhlbWVpY29uLWN1c3RvbSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZC5qc3RyZWUtcnRsIC5qc3RyZWUtbm9kZSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQklBQUFBQ0FRTUFBQUJ2MWg2UEFBQUFCbEJNVkVVQUFBQWRIUnZFa0N3Y0FBQUFBWFJTVGxNQVFPYllaZ0FBQUF4SlJFRlVDTmRqQUFNSEJnQUFpQUJCSTRnejlBQUFBQUJKUlU1RXJrSmdnZz09Jyk7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZC5qc3RyZWUtcnRsIC5qc3RyZWUtbGFzdCB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtc2VhcmNoIHsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtbm8tbWF0Y2ggLmpzdHJlZS1vY2wgewogICAgZGlzcGxheTogbm9uZTsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtbm8tbWF0Y2ggewogICAgbWFyZ2luLWxlZnQ6IDJweCAhaW1wb3J0YW50Owp9CgouanN0cmVlLUlucHV0RmllbGQuanN0cmVlLXJ0bCAuanN0cmVlLW5vLW1hdGNoIHsKICAgIG1hcmdpbi1yaWdodDogMnB4ICFpbXBvcnRhbnQ7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAganNUcmVlIHRoZW1lIC0gVHJlZSB2YXJpYW50CiAqLwouanN0cmVlLUlucHV0RmllbGQtVHJlZSAuanN0cmVlLW5vZGUgewogICAgbWluLWhlaWdodDogMThweDsKICAgIGxpbmUtaGVpZ2h0OiAxOHB4OwogICAgbWFyZ2luLWxlZnQ6IDE4cHg7CiAgICBtaW4td2lkdGg6IDE4cHg7Cn0KCi5SVEwgLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgLmpzdHJlZS1ub2RlIHsKICAgIG1hcmdpbi1yaWdodDogMThweDsKICAgIG1hcmdpbi1sZWZ0OiAwOwp9CgouanN0cmVlLUlucHV0RmllbGQtVHJlZSA+IC5qc3RyZWUtY29udGFpbmVyLXVsID4gLmpzdHJlZS1ub2RlLAouUlRMIC5qc3RyZWUtSW5wdXRGaWVsZC1UcmVlID4gLmpzdHJlZS1jb250YWluZXItdWwgPiAuanN0cmVlLW5vZGUgewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZC1UcmVlIC5qc3RyZWUtYW5jaG9yIHsKICAgIGhlaWdodDogMThweDsKICAgIGxpbmUtaGVpZ2h0OiAxOHB4Owp9CgouanN0cmVlLUlucHV0RmllbGQtVHJlZSAuanN0cmVlLWljb24gewogICAgd2lkdGg6IDE4cHg7CiAgICBoZWlnaHQ6IDE4cHg7CiAgICBsaW5lLWhlaWdodDogMThweDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgLmpzdHJlZS1pY29uOmVtcHR5IHsKICAgIHdpZHRoOiAxOHB4OwogICAgaGVpZ2h0OiAxOHB4OwogICAgbGluZS1oZWlnaHQ6IDE4cHg7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZC1UcmVlLmpzdHJlZS1ydGwgLmpzdHJlZS1ub2RlIHsKICAgIG1hcmdpbi1yaWdodDogMThweDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgLmpzdHJlZS13aG9sZXJvdyB7CiAgICBoZWlnaHQ6IDE4cHg7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZC1UcmVlIC5qc3RyZWUtbm9kZSwKLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgLmpzdHJlZS1pY29uIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1nL2lucHV0ZmllbGRfdHJlZS5wbmcnKTsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgLmpzdHJlZS1ub2RlIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0yOTVweCAtN3B4OwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC15Owp9CgouanN0cmVlLUlucHV0RmllbGQtVHJlZSAuanN0cmVlLWxhc3QgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZC1UcmVlIC5qc3RyZWUtb3BlbiA+IC5qc3RyZWUtb2NsIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0xMzVweCAtN3B4Owp9CgouUlRMIC5qc3RyZWUtSW5wdXRGaWVsZC1UcmVlIC5qc3RyZWUtb3BlbiA+IC5qc3RyZWUtb2NsIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0xMzVweCAtMzlweDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgLmpzdHJlZS1jbG9zZWQgPiAuanN0cmVlLW9jbCB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTAzcHggLTdweDsKfQoKLlJUTCAuanN0cmVlLUlucHV0RmllbGQtVHJlZSAuanN0cmVlLWNsb3NlZCA+IC5qc3RyZWUtb2NsIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0xMDNweCAtMzlweDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgLmpzdHJlZS1sZWFmID4gLmpzdHJlZS1vY2wgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTcxcHggLTdweDsKfQoKLlJUTCAuanN0cmVlLUlucHV0RmllbGQtVHJlZSAuanN0cmVlLWxlYWYgPiAuanN0cmVlLW9jbCB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNzFweCAtMzlweDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgLmpzdHJlZS10aGVtZWljb24gewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTI2M3B4IC03cHg7Cn0KCi5SVEwgLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgLmpzdHJlZS10aGVtZWljb24gewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTI2M3B4IC0zOXB4Owp9CgouanN0cmVlLUlucHV0RmllbGQtVHJlZSA+IC5qc3RyZWUtbm8tZG90cyAuanN0cmVlLW5vZGUsCi5qc3RyZWUtSW5wdXRGaWVsZC1UcmVlID4gLmpzdHJlZS1uby1kb3RzIC5qc3RyZWUtbGVhZiA+IC5qc3RyZWUtb2NsIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Owp9CgouanN0cmVlLUlucHV0RmllbGQtVHJlZSA+IC5qc3RyZWUtbm8tZG90cyAuanN0cmVlLW9wZW4gPiAuanN0cmVlLW9jbCB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzlweCAtN3B4Owp9CgouUlRMIC5qc3RyZWUtSW5wdXRGaWVsZC1UcmVlID4gLmpzdHJlZS1uby1kb3RzIC5qc3RyZWUtb3BlbiA+IC5qc3RyZWUtb2NsIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0zOXB4IC0zOXB4Owp9CgouanN0cmVlLUlucHV0RmllbGQtVHJlZSA+IC5qc3RyZWUtbm8tZG90cyAuanN0cmVlLWNsb3NlZCA+IC5qc3RyZWUtb2NsIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IC03cHggLTdweDsKfQoKLlJUTCAuanN0cmVlLUlucHV0RmllbGQtVHJlZSA+IC5qc3RyZWUtbm8tZG90cyAuanN0cmVlLWNsb3NlZCA+IC5qc3RyZWUtb2NsIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IC03cHggLTM5cHg7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAganNUcmVlIHRoZW1lIC0gTm8gVHJlZSB2YXJpYW50CiAqLwouanN0cmVlLUlucHV0RmllbGQtTm9UcmVlIC5qc3RyZWUtbm9kZSB7CiAgICBtaW4taGVpZ2h0OiAxOHB4OwogICAgbGluZS1oZWlnaHQ6IDE4cHg7CiAgICBtYXJnaW4tbGVmdDogMnB4OwogICAgbWluLXdpZHRoOiAxOHB4Owp9CgouanN0cmVlLUlucHV0RmllbGQtTm9UcmVlIC5qc3RyZWUtYW5jaG9yIHsKICAgIGhlaWdodDogMThweDsKICAgIGxpbmUtaGVpZ2h0OiAxOHB4Owp9CgouanN0cmVlLUlucHV0RmllbGQtTm9UcmVlIC5qc3RyZWUtaWNvbiB7CiAgICBkaXNwbGF5OiBub25lOwp9CgouanN0cmVlLUlucHV0RmllbGQtTm9UcmVlLmpzdHJlZS1ydGwgLmpzdHJlZS1ub2RlIHsKICAgIG1hcmdpbi1yaWdodDogMnB4Owp9CgouanN0cmVlLUlucHV0RmllbGQtTm9UcmVlIC5qc3RyZWUtd2hvbGVyb3cgewogICAgaGVpZ2h0OiAxOHB4Owp9Cgp9IC8qIGVuZCBAbWVkaWEgKi8K</File>
        <File Location="var/httpd/htdocs/js/Core.UI.Dialog.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vICRvcmlnaW46IG90b2JvIC0gZTQ0YzE4YWVhOWFiYzEyNWZkZGY5Y2VlZWQyMDRkYjRmYWIyOTBlMCAtIHZhci9odHRwZC9odGRvY3MvanMvQ29yZS5VSS5EaWFsb2cuanMKLy8gLS0KLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKLy8gdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKLy8gRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCi8vIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCi8vIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgovLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQovLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLy8gLS0KCiJ1c2Ugc3RyaWN0IjsKCnZhciBDb3JlID0gQ29yZSB8fCB7fTsKQ29yZS5VSSA9IENvcmUuVUkgfHwge307CgovKioKICogQG5hbWVzcGFjZSBDb3JlLlVJLkRpYWxvZwogKiBAbWVtYmVyb2YgQ29yZS5VSQogKiBAYXV0aG9yCiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIENvbnRhaW5zIHRoZSBjb2RlIGZvciB0aGUgZGlmZmVyZW50IGRpYWxvZ3MuCiAqLwpDb3JlLlVJLkRpYWxvZyA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIERpYWxvZ0NvdW50ZXIKICAgICAqIEBtZW1iZXJvZiBDb3JlLlVJLkRpYWxvZwogICAgICogQG1lbWJlciB7TnVtYmVyfQogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIE51bWJlciBvZiB1c2VkL29wZW5lZCBkaWFsb2dzIG9uIGEgcGFnZS4gVXNlZCB0byByZXN0b3JlIHRoZSBjb3JyZWN0IEhUTUwgYmFja3VwIGFmdGVyIGRpYWxvZyBpcyBjbG9zZWQuCiAgICAgKi8KICAgIHZhciBEaWFsb2dDb3VudGVyID0gMTsKCiAgICAvKgogICAgICogY2hlY2sgZGVwZW5kZW5jaWVzIGZpcnN0CiAgICAgKi8KICAgIGlmICghQ29yZS5EZWJ1Zy5DaGVja0RlcGVuZGVuY3koJ0NvcmUuVUkuRGlhbG9nJywgJyQoW10pLmRyYWdnYWJsZScsICdqUXVlcnkgVUkgZHJhZ2dhYmxlJykpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBpZiAoIUNvcmUuRGVidWcuQ2hlY2tEZXBlbmRlbmN5KCdDb3JlLlVJLkRpYWxvZycsICdDb3JlLkNvbmZpZycsICdDb3JlLkNvbmZpZycpKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgaWYgKCFDb3JlLkRlYnVnLkNoZWNrRGVwZW5kZW5jeSgnQ29yZS5VSS5EaWFsb2cnLCAnQ29yZS5VSS5JbnB1dEZpZWxkcycsICdDb3JlLlVJLklucHV0RmllbGRzJykpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICogQG5hbWUgQWRqdXN0U2Nyb2xsYWJsZUhlaWdodAogICAgICogQG1lbWJlcm9mIENvcmUuVUkuRGlhbG9nCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gQWxsb3dBdXRvR3JvdyAtIElmIEFsbG93QXV0b0dyb3cgaXMgc2V0LCBhdXRvLXJlc2l6aW5nIHNob3VsZCBiZSBwb3NzaWJsZS4KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBBZGp1c3RzIHRoZSBzY3JvbGxhYmxlIGlubmVyIGNvbnRhaW5lciBvZiB0aGUgZGlhbG9nIGFmdGVyIGV2ZXJ5IHJlc2l6aW5nLgogICAgICovCiAgICBmdW5jdGlvbiBBZGp1c3RTY3JvbGxhYmxlSGVpZ2h0KEFsbG93QXV0b0dyb3cpIHsKICAgICAgICAvLyBDaGVjayB3aW5kb3cgaGVpZ2h0IGFuZCBhZGp1c3QgdGhlIHNjcm9sbGFibGUgaGVpZ2h0IG9mIElubmVyQ29udGVudAogICAgICAgIC8vIENhbGN1bGF0aW9uOgogICAgICAgIC8vIFdpbmRvdyBoZWlnaHQKICAgICAgICAvLyAtIHRvcCBtYXJnaW4gb2YgZGlhbG9nIHR3aWNlIChmb3IgdG9wIGFuZCBib3R0b20pIC0gb25seSB1c2UgdGhpcyBmb3IgYmlnIGRpYWxvZyB3aW5kb3dzCiAgICAgICAgLy8gLSBzb21lIHN0YXRpYyBwaXhlbHMgZm9yIEhlYWRlciBhbmQgRm9vdGVyIG9mIGRpYWxvZwogICAgICAgIHZhciBDb250ZW50U2Nyb2xsSGVpZ2h0ID0gMCwKICAgICAgICAgICAgV2luZG93SGVpZ2h0ID0gJCh3aW5kb3cpLmhlaWdodCgpLAogICAgICAgICAgICBXaW5kb3dTY3JvbGxUb3AgPSAkKHdpbmRvdykuc2Nyb2xsVG9wKCksCiAgICAgICAgICAgIERpYWxvZ1RvcE1hcmdpbiA9ICQoJy5EaWFsb2c6dmlzaWJsZScpLm9mZnNldCgpLnRvcCwKICAgICAgICAgICAgRGlhbG9nSGVpZ2h0ID0gJCgnLkRpYWxvZzp2aXNpYmxlJykuaGVpZ2h0KCk7CgogICAgICAgIC8vIGlmIGRpYWxvZyBoZWlnaHQgaXMgbW9yZSB0aGFuIDMwMHB4IHJlY2FsY3VsYXRlIHdpZHRoIG9mIElubmVyQ29udGVudCB0byBtYWtlIGl0IHNjcm9sbGFibGUKICAgICAgICAvLyBpZiBkaWFsb2cgaXMgc21hbGxlciB0aGFuIDMwMHB4IHRoaXMgaXMgbm90IG5lY2Vzc2FyeQogICAgICAgIC8vIGlmIEFsbG93QXV0b0dyb3cgaXMgc2V0LCBhdXRvLXJlc2l6aW5nIHNob3VsZCBiZSBwb3NzaWJsZQogICAgICAgIC8vIGlmIGluIGEgbW9iaWxlIGVudmlyb25tZW50IGFuZCBhIHNtYWxsIHNjcmVlbiwgdXNlIGFzIG11Y2ggd2luZG93IGhlaWdodCBhcyBwb3NzaWJsZQogICAgICAgIGlmICgkKCcuRGlhbG9nOnZpc2libGUnKS5oYXNDbGFzcygnRnVsbHNpemUnKSkgewogICAgICAgICAgICBDb250ZW50U2Nyb2xsSGVpZ2h0ID0gV2luZG93SGVpZ2h0IC0gODA7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKEFsbG93QXV0b0dyb3cgfHwgRGlhbG9nSGVpZ2h0ID4gMzAwKSB7CiAgICAgICAgICAgIENvbnRlbnRTY3JvbGxIZWlnaHQgPSBXaW5kb3dIZWlnaHQgLSAoKERpYWxvZ1RvcE1hcmdpbiAtIFdpbmRvd1Njcm9sbFRvcCkgKiAyKSAtIDEwMDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIENvbnRlbnRTY3JvbGxIZWlnaHQgPSAyMDA7CiAgICAgICAgfQogICAgICAgICQoJy5EaWFsb2c6dmlzaWJsZSAuQ29udGVudCAuSW5uZXJDb250ZW50JykuY3NzKCdtYXgtaGVpZ2h0JywgQ29udGVudFNjcm9sbEhlaWdodCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICogQG5hbWUgRm9jdXNGaXJzdEVsZW1lbnQKICAgICAqIEBtZW1iZXJvZiBDb3JlLlVJLkRpYWxvZwogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgRm9jdXNlcyB0aGUgZmlyc3QgZWxlbWVudCB3aXRoaW4gdGhlIGRpYWxvZy4KICAgICAqLwogICAgZnVuY3Rpb24gRm9jdXNGaXJzdEVsZW1lbnQoKSB7CiAgICAgICAgdmFyICRGaXJzdEVsZW1lbnQgPSAkKCdkaXYuRGlhbG9nOnZpc2libGUgLkNvbnRlbnQnKQogICAgICAgICAgICAgICAgLmZpbmQoJ2E6dmlzaWJsZSwgaW5wdXQ6dmlzaWJsZSwgdGV4dGFyZWE6dmlzaWJsZSwgc2VsZWN0OnZpc2libGUsIGJ1dHRvbjp2aXNpYmxlJykKICAgICAgICAgICAgICAgIC5maWx0ZXIoJzpmaXJzdCcpLAogICAgICAgICAgICAkRm9jdXNGaWVsZDsKCiAgICAgICAgaWYgKCEkRmlyc3RFbGVtZW50IHx8ICEkRmlyc3RFbGVtZW50Lmxlbmd0aCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvLyBJZiBmaXJzdCBlbGVtZW50IGlzIG1vZGVybml6ZWQgaW5wdXQgZmllbGQsIHByZXBlbmQgYSBzZW1pLWhpZGRlbiB0ZXh0IGZpZWxkIGFuZCBzZXQgZm9jdXMgb24gaXQgaW5zdGVhZC4KICAgICAgICAvLyAgIFRoaXMgd2lsbCBwcmV2ZW50IGF1dG9tYXRpYyBleHBhbnNpb24gb2YgdGhlIGlucHV0IGZpZWxkLCBidXQgc3RpbGwgbW92ZSB0YWIgaW5kZXggdG8gdGhlIGRpYWxvZyBhbmQgYWxsb3cKICAgICAgICAvLyAgIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIGluIGl0LiBTZWUgYnVnIzEyNjgxIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgIGlmICgkRmlyc3RFbGVtZW50Lmhhc0NsYXNzKCdJbnB1dEZpZWxkX1NlYXJjaCcpKSB7CiAgICAgICAgICAgICRGb2N1c0ZpZWxkID0gJCgnPGlucHV0Lz4nKQogICAgICAgICAgICAgICAgLmFkZENsYXNzKCdGb2N1c0ZpZWxkJykKICAgICAgICAgICAgICAgIC5pbnNlcnRCZWZvcmUoJEZpcnN0RWxlbWVudCk7CiAgICAgICAgICAgICRGb2N1c0ZpZWxkLmZvY3VzKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkRmlyc3RFbGVtZW50LmZvY3VzKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIEluaXRLZXlFdmVudAogICAgICogQG1lbWJlcm9mIENvcmUuVUkuRGlhbG9nCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gQ2xvc2VPbkVzY2FwZSAtIElmIHNldCB0byB0cnVlLCB0aGUgZXNjYXBlIGtleSBpcyBjaGVja2VkIGZvciBjbG9zaW5nIHRoZSBkaWFsb2cuCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgSW5pdGlhbGl6ZXMgdGhlIGtleSBldmVudCBsb2dnZXIgZm9yIHRoZSBkaWFsb2cuCiAgICAgKiAgICAgIE11c3QgYmUgdW5iaW5kZWQgd2hlbiBjbG9zaW5nIHRoZSBkaWFsb2cuCiAgICAgKi8KICAgIGZ1bmN0aW9uIEluaXRLZXlFdmVudChDbG9zZU9uRXNjYXBlKSB7Ci8vIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgIC8vIHZhciAkRGlhbG9nID0gJCgnZGl2LkRpYWxvZzp2aXNpYmxlJyk7CiAgICAgICAgdmFyICREaWFsb2cgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICQoJ2Rpdi5EaWFsb2c6dmlzaWJsZScpOwogICAgICAgIH07Ci8vIEVPIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgLyoKICAgICAgICAgKiBPcGVyYSBjYW4ndCBwcmV2ZW50IHRoZSBkZWZhdWx0IGFjdGlvbiBvZiBzcGVjaWFsIGtleXMgb24ga2V5ZG93bi4gVGhhdCdzIHdoeSB3ZSBuZWVkIGEgc3BlY2lhbCBrZXlwcmVzcyBldmVudCBoZXJlLAogICAgICAgICAqIHRvIHByZXZlbnQgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciB0aGUgc3BlY2lhbCBrZXlzLgogICAgICAgICAqIFNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2RvbS9ldmVudHMva2V5cy5odG1sIGZvciBkZXRhaWxzCiAgICAgICAgICovCiAgICAgICAgJChkb2N1bWVudCkub2ZmKCdrZXlwcmVzcy5EaWFsb2cnKS5vbigna2V5cHJlc3MuRGlhbG9nJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgIGlmICgkLmJyb3dzZXIub3BlcmEgJiYgKEV2ZW50LmtleUNvZGUgPT09IDkgfHwgKEV2ZW50LmtleUNvZGUgPT09IDI3ICYmIENsb3NlT25Fc2NhcGUpKSkgewogICAgICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfSkub2ZmKCdrZXlkb3duLkRpYWxvZycpLm9uKCdrZXlkb3duLkRpYWxvZycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICB2YXIgJFRhYmJhYmxlcywgJEZpcnN0LCAkTGFzdDsKCiAgICAgICAgICAgIC8vIFRhYiBwcmVzc2VkCiAgICAgICAgICAgIGlmIChFdmVudC5rZXlDb2RlID09PSA5KSB7CiAgICAgICAgICAgICAgICAvLyA6dGFiYmFibGUgcHJvYmFibHkgY29tZXMgZnJvbSBqcXVlcnkgVUkKLy8gUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgICAgICAgICAvLyAkVGFiYmFibGVzID0gJCgnYTp2aXNpYmxlLCBpbnB1dDp2aXNpYmxlLCB0ZXh0YXJlYTp2aXNpYmxlLCBzZWxlY3Q6dmlzaWJsZSwgYnV0dG9uOnZpc2libGUnLCAkRGlhbG9nKTsKICAgICAgICAgICAgICAgICRUYWJiYWJsZXMgPSAkKCdhOnZpc2libGUsIGlucHV0OnZpc2libGUsIHRleHRhcmVhOnZpc2libGUsIHNlbGVjdDp2aXNpYmxlLCBidXR0b246dmlzaWJsZScsICREaWFsb2coKSk7Ci8vIEVPIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgICAgICAgICAkRmlyc3QgPSAkVGFiYmFibGVzLmZpbHRlcignOmZpcnN0Jyk7CiAgICAgICAgICAgICAgICAkTGFzdCA9ICRUYWJiYWJsZXMuZmlsdGVyKCc6bGFzdCcpOwoKICAgICAgICAgICAgICAgIGlmIChFdmVudC50YXJnZXQgPT09ICRMYXN0WzBdICYmICFFdmVudC5zaGlmdEtleSkgewogICAgICAgICAgICAgICAgICAgICRGaXJzdC5mb2N1cygxKTsKICAgICAgICAgICAgICAgICAgICBFdmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKEV2ZW50LnRhcmdldCA9PT0gJEZpcnN0WzBdICYmIEV2ZW50LnNoaWZ0S2V5KSB7CiAgICAgICAgICAgICAgICAgICAgJExhc3QuZm9jdXMoMSk7CiAgICAgICAgICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICBFdmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gRXNjYXBlIHByZXNzZWQgYW5kIENsb3NlT25Fc2NhcGUgaXMgdHJ1ZQogICAgICAgICAgICBlbHNlIGlmIChFdmVudC5rZXlDb2RlID09PSAyNyAmJiBDbG9zZU9uRXNjYXBlKSB7Ci8vIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgICAgICAgICAgVGFyZ2V0TlMuQ2xvc2VEaWFsb2coJERpYWxvZygpKTsKLy8gRU8gU2VydmljZUNhdGFsb2cKICAgICAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICBFdmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIERlZmF1bHRTdWJtaXRGdW5jdGlvbgogICAgICogQG1lbWJlcm9mIENvcmUuVUkuRGlhbG9nCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGUgZGVmYXVsdCBzdWJtaXQgZnVuY3Rpb24gaW4gdGhlIGRpYWxvZy4KICAgICAqLwogICAgZnVuY3Rpb24gRGVmYXVsdFN1Ym1pdEZ1bmN0aW9uKCkgewogICAgICAgICQoJy5EaWFsb2c6dmlzaWJsZSBmb3JtJykuc3VibWl0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICogQG5hbWUgRGVmYXVsdENsb3NlRnVuY3Rpb24KICAgICAqIEBtZW1iZXJvZiBDb3JlLlVJLkRpYWxvZwogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gY2xvc2UgdGhlIGRpYWxvZy4KICAgICAqLwogICAgZnVuY3Rpb24gRGVmYXVsdENsb3NlRnVuY3Rpb24oKSB7CiAgICAgICAgVGFyZ2V0TlMuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZzp2aXNpYmxlJykpOwogICAgfQoKICAgIC8qKgogICAgICogQG5hbWUgU2hvd0RpYWxvZwogICAgICogQG1lbWJlcm9mIENvcmUuVUkuRGlhbG9nCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBQYXJhbXMgLSBUaGUgZGlmZmVyZW50IGNvbmZpZyBvcHRpb25zLgogICAgICogQHBhcmFtIHtCb29sZWFufSBQYXJhbXMuTW9kYWwgLSBTaG93cyBhIGRhcmsgYmFja2dyb3VuZCBvdmVybGF5IGJlaGluZCB0aGUgZGlhbG9nIChkZWZhdWx0OiBmYWxzZSkKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBQYXJhbXMuVHlwZSAtIEFsZXJ0fFNlYXJjaCAoZGVmYXVsdDogdW5kZWZpbmVkKSBEZWZpbmVzIGEgc3BlY2lhbCB0eXBlIG9mIGRpYWxvZy4KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBQYXJhbXMuVGl0bGUgLSBEZWZpbmVzIHRoZSB0aXRsZSBvZiB0aGUgZGlhbG9nIHdpbmRvdyAoZGVmYXVsdDogdW5kZWZpbmVkKS4KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBQYXJhbXMuSGVhZGxpbmUgLSBEZWZpbmVzIGEgc3BlY2lhbCBoZWFkbGluZSB3aXRoaW4gdGhlIGRpYWxvZyB3aW5kb3cgKGRlZmF1bHQ6IHVuZGVmaW5lZCkuIE9ubHkgdXNlZCBmb3IgVHlwZSBBbGVydC4KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBQYXJhbXMuVGV4dCAtIFRoZSB0ZXh0IHdoaWNoIGlzIG91dHB1dHRldCBpbiB0aGUgZGlhbG9nIHdpbmRvdyAoZGVmYXVsdDogdW5kZWZpbmVkKS4gT25seSB1c2VkIGZvciBUeXBlIEFsZXJ0LgogICAgICogQHBhcmFtIHtTdHJpbmd9IFBhcmFtcy5IVE1MIC0gVXNlZCBmb3IgY29udGVudCBkaWFsb2cgd2luZG93cy4gQ29udGFpbnMgYSBjb21wbGV0ZSBIVE1MIHNuaXBwZXQgb3IgYW4galF1ZXJ5IG9iamVjdCB3aXRoIGNvbnRhaW5pbmcgSFRNTCAoZGVmYXVsdDogdW5kZWZpbmVkKS4KICAgICAqIEBwYXJhbSB7TnVtYmVyfSBQYXJhbXMuUG9zaXRpb25Ub3AgLSBEZWZpbmVzIHRoZSB0b3AgcG9zaXRpb24gb2YgdGhlIGRpYWxvZyB3aW5kb3cgKGRlZmF1bHQ6IHVuZGVmaW5lZCkuCiAgICAgKiBAcGFyYW0ge051bWJlcn0gUGFyYW1zLlBvc2l0aW9uQm90dG9tIC0gRGVmaW5lcyB0aGUgYm90dG9tIHBvc2l0aW9uIG9mIHRoZSBkaWFsb2cgd2luZG93IChkZWZhdWx0OiB1bmRlZmluZWQpLgogICAgICogQHBhcmFtIHtOdW1iZXJ8U3RyaW5nfSBQYXJhbXMuUG9zaXRpb25MZWZ0IC0gRGVmaW5lcyB0aGUgbGVmdCBwb3NpdGlvbiBvZiB0aGUgZGlhbG9nIHdpbmRvdy4gJ0NlbnRlcicgY2VudGVycyB0aGUgd2luZG93IChkZWZhdWx0OiB1bmRlZmluZWQpLgogICAgICogQHBhcmFtIHtOdW1iZXJ9IFBhcmFtcy5Qb3NpdGlvblJpZ2h0IC0gRGVmaW5lcyB0aGUgcmlnaHQgcG9zaXRpb24gb2YgdGhlIGRpYWxvZyB3aW5kb3cgKGRlZmF1bHQ6IHVuZGVmaW5lZCkuCiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFBhcmFtcy5DbG9zZU9uQ2xpY2tPdXRzaWRlIC0gSWYgdHJ1ZSwgY2xpY2tpbmcgb3V0c2lkZSB0aGUgZGlhbG9nIGNsb3NlcyB0aGUgZGlhbG9nIChkZWZhdWx0OiBmYWxzZSkuCiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFBhcmFtcy5DbG9zZU9uRXNjYXBlIC0gSWYgdHJ1ZSwgcHJlc3NpbmcgZXNjYXBlIGtleSBjbG9zZXMgdGhlIGRpYWxvZyAoZGVmYXVsdDogZmFsc2UpLgogICAgICogQHBhcmFtIHtCb29sZWFufSBQYXJhbXMuQWxsb3dBdXRvR3JvdyAtIElmIHRydWUsIHRoZSBJbm5lckNvbnRlbnQgb2YgdGhlIGRpYWxvZyBjYW4gcmVzaXplIHVudGlsIHRoZSBtYXggd2luZG93IGhlaWdodCBpcyByZWFjaGVkLCBpZiBmYWxzZSAoZGVmYXVsdCksIElubmVyQ29udGVudCBvZiBzbWFsbCBkaWFsb2dzIGRvZXMgbm90IHJlc2l6ZSBvdmVyIDIwMHB4LgogICAgICogQHBhcmFtIHtCb29sZWFufSBQYXJhbXMuSGlkZUhlYWRlciAtIEhpZGUgdGhlIGhlYWRlciBieSBzZXR0aW5nIHRoaXMgdG8gdHJ1ZQogICAgICogQHBhcmFtIHtCb29sZWFufSBQYXJhbXMuSGlkZUZvb3RlciAtIEhpZGUgdGhlIGZvb3RlciBieSBzZXR0aW5nIHRoaXMgdG8gdHJ1ZQogICAgICogQHBhcmFtIHtPYmplY3R9IFBhcmFtcy5CdXR0b25zIC0gQXJyYXkgb2YgSGFzaGVzIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIChidXR0b25zIGFyZSBwbGFjZWQgaW4gYSBkaXYgImZvb3RlciIgb2YgdGhlIGRpYWxvZyk6CiAgICAgKiBAcGFyYW0ge1N0cmluZ30gUGFyYW1zLkJ1dHRvbnMuTGFiZWwgLSBUZXh0IG9mIHRoZSBidXR0b24uCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gUGFyYW1zLkJ1dHRvbnMuVHlwZSAtICdTdWJtaXQnfCdDbG9zZScgKGRlZmF1bHQ6IG5vbmUpIFNwZWNpYWwgdHlwZSBvZiB0aGUgYnV0dG9uIC0gaW52b2tlcyBhIHN0YW5kYXJkIGZ1bmN0aW9uLgogICAgICogQHBhcmFtIHtTdHJpbmd9IFBhcmFtcy5CdXR0b25zLkNsYXNzIC0gT3B0aW9uYWwgY2xhc3MgcGFyYW1ldGVycyBmb3IgdGhlIGJ1dHRvbiBlbGVtZW50LgogICAgICogQHBhcmFtIHtGdW5jdGlvbn0gUGFyYW1zLkJ1dHRvbnMuRnVuY3Rpb24gLSBUaGUgZnVuY3Rpb24gd2hpY2ggaXMgZXhlY3V0ZWQgb24gY2xpY2sgKG9wdGlvbmFsKS4KLy8gUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFBhcmFtcy5TdGFja2VkIC0gSWYgdHJ1ZSwgdGhlbiBhIG5ldyBkaWFsb2cgYXBwZWFycyBvbiB0b3Agb2YgZXhpc3Rpbmcgb25lcyAoZGVmYXVsdDogZmFsc2UpLgovLyBFTyBTZXJ2aWNlQ2F0YWxvZwogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFRoZSBtYWluIGRpYWxvZyBmdW5jdGlvbiB1c2VkIGZvciBhbGwgZGlmZmVyZW50IHR5cGVzIG9mIGRpYWxvZ3MuCiAgICAgKi8KICAgIFRhcmdldE5TLlNob3dEaWFsb2cgPSBmdW5jdGlvbihQYXJhbXMpIHsKCiAgICAgICAgdmFyICREaWFsb2csICRDb250ZW50LCAkQnV0dG9uRm9vdGVyLCBIVE1MQmFja3VwLCBEaWFsb2dDb3B5LCBEaWFsb2dDb3B5U2VsZWN0b3IsCiAgICAgICAgICAgIERpYWxvZ0hUTUwsCiAgICAgICAgICAgIEZ1bGxzaXplTW9kZSA9IGZhbHNlLAogICAgICAgICAgICBDdXN0b21lckludGVyZmFjZSA9IENvcmUuQ29uZmlnLkdldCgnU2Vzc2lvbk5hbWUnKSA9PT0gQ29yZS5Db25maWcuR2V0KCdDdXN0b21lclBhbmVsU2Vzc2lvbk5hbWUnKTsKCi8vIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwovLyAgICAgICAgIERpYWxvZ0hUTUwgPSAnPGRpdiBjbGFzcz0iRGlhbG9nIj4nOwogICAgICAgIERpYWxvZ0hUTUwgPSAnPGRpdiBjbGFzcz0iRGlhbG9nIicgKyAoUGFyYW1zLlN0YWNrZWQgPyAnIGRhdGEtc3RhY2tlZD0ic3RhY2tlZCInIDogJycpICsgJz4nOwovLyBFTyBTZXJ2aWNlQ2F0YWxvZwoKICAgICAgICBpZiAoIVBhcmFtcy5IaWRlSGVhZGVyKSB7CiAgICAgICAgICAgIHZhciBDbG9zZUljb24gPSBDdXN0b21lckludGVyZmFjZSA/ICdvb29mbyBvb29mby1jbG9zZScgOiAnZmEgZmEtdGltZXMnOwogICAgICAgICAgICBEaWFsb2dIVE1MICs9ICc8ZGl2IGNsYXNzPSJIZWFkZXIiPjxhIGNsYXNzPSJDbG9zZSIgdGl0bGU9IicgKyBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnQ2xvc2UgdGhpcyBkaWFsb2cnKSArICciIGhyZWY9IiMiPjxpIGNsYXNzPSInICsgQ2xvc2VJY29uICsgJyI+PC9pPjwvYT48L2Rpdj4nOwogICAgICAgIH0KICAgICAgICBEaWFsb2dIVE1MICs9ICc8ZGl2IGNsYXNzPSJDb250ZW50Ij48L2Rpdj4nOwogICAgICAgIGlmICghUGFyYW1zLkhpZGVGb290ZXIpIHsKICAgICAgICAgICAgRGlhbG9nSFRNTCArPSAnPGRpdiBjbGFzcz0iRm9vdGVyIj48L2Rpdj4nOwogICAgICAgIH0KICAgICAgICBEaWFsb2dIVE1MICs9ICc8L2Rpdj4nOwoKICAgICAgICAvKioKICAgICAgICAgKiBAcHJpdmF0ZQogICAgICAgICAqIEBuYW1lIEhhbmRsZUNsb3NpbmdBY3Rpb24KICAgICAgICAgKiBAbWVtYmVyb2YgQ29yZS5VSS5EaWFsb2cuU2hvd0RpYWxvZwogICAgICAgICAqIEBmdW5jdGlvbgogICAgICAgICAqIEBkZXNjcmlwdGlvbgogICAgICAgICAqICAgICAgSWYgbm8gY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSBjbG9zZSBpcyBnaXZlbiAodmlhIHRoZSBCdXR0b24gZGVmaW5pdGlvbiksCiAgICAgICAgICogICAgICB0aGUgZGlhbG9nIGlzIGp1c3QgY2xvc2VkLiBPdGhlcndpc2UgdGhlIGRlZmluZWQgQ2xvc2UgYnV0dG9uIGlzIHRyaWdnZXJlZCwKICAgICAgICAgKiAgICAgIHdoaWNoIGludm9rZXMgdGhlIGNhbGxiYWNrIGFuZCB0aGUgY2xvc2luZyBvZiB0aGUgZGlhbG9nLgogICAgICAgICAqLwogICAgICAgIGZ1bmN0aW9uIEhhbmRsZUNsb3NpbmdBY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciAkQ2xvc2VCdXR0b24gPSAkKCcuRGlhbG9nOnZpc2libGUgYnV0dG9uLkNsb3NlJyk7CgogICAgICAgICAgICAvLyBwdWJsaXNoIGNsb3NlIGV2ZW50CiAgICAgICAgICAgIENvcmUuQXBwLlB1Ymxpc2goJ0V2ZW50LlVJLkRpYWxvZy5DbG9zZURpYWxvZy5DbG9zZScsIFskRGlhbG9nXSk7CgogICAgICAgICAgICAvLyBIaWRlIGFueSBwb3NzaWJseSBleGlzdGluZyB0b29sdGlwcy4KICAgICAgICAgICAgaWYgKENvcmUuRm9ybSAmJiBDb3JlLkZvcm0uRXJyb3JUb29sdGlwcykgewogICAgICAgICAgICAgICAgQ29yZS5Gb3JtLkVycm9yVG9vbHRpcHMuSGlkZVRvb2x0aXAoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRDbG9zZUJ1dHRvbi5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICRDbG9zZUJ1dHRvbi50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgRGVmYXVsdENsb3NlRnVuY3Rpb24oKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogQHByaXZhdGUKICAgICAgICAgKiBAbmFtZSBDYWxjdWxhdGVEaWFsb2dQb3NpdGlvbgogICAgICAgICAqIEBtZW1iZXJvZiBDb3JlLlVJLkRpYWxvZy5TaG93RGlhbG9nCiAgICAgICAgICogQGZ1bmN0aW9uCiAgICAgICAgICogQHJldHVybnMge1N0cmluZ30gVGhlIHBvc2l0aW9uIG9mIHRoZSBkaWFsb2cuCiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd8TnVtYmVyfSBQb3NpdGlvbiAtIFRoZSBwb3NpdGlvbiBvZiB0aGUgZGlhbG9nLgogICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBUeXBlIC0gQ2FuIGJlICd0b3AnIG9yICdib3R0b20nLgogICAgICAgICAqIEBkZXNjcmlwdGlvbgogICAgICAgICAqICAgICAgQ2FsY3VsYXRlcyB0aGUgY29ycmVjdCBwb3NpdGlvbiBvZiB0aGUgZGlhbG9nLCBnaXZlbiBieSB0aGUgUG9zaXRpb24uCiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gQ2FsY3VsYXRlRGlhbG9nUG9zaXRpb24oUG9zaXRpb24sIFR5cGUpIHsKICAgICAgICAgICAgdmFyIFNjcm9sbFRvcCA9ICQod2luZG93KS5zY3JvbGxUb3AoKSwKICAgICAgICAgICAgICAgIFdpbmRvd0hlaWdodCA9ICQod2luZG93KS5oZWlnaHQoKTsKCiAgICAgICAgICAgIGlmICggQ3VzdG9tZXJJbnRlcmZhY2UgKSB7CiAgICAgICAgICAgICAgICAvLyBlbGVtZW50IGlzIHBvc2l0aW9uZWQgImZpeGVkIgogICAgICAgICAgICAgICAgU2Nyb2xsVG9wID0gMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgVHlwZSA9IFR5cGUgfHwgJ3RvcCc7CiAgICAgICAgICAgIC8vIGNvbnZlcnQgUG9zaXRpb24gdG8gYSBzdHJpbmcgc28gdGhhdCBudW1iZXJzIGNhbiBiZSBwYXNzZWQgdG9vCiAgICAgICAgICAgIC8vICAobGF0ZXIgc3RyaW5nIG9wZXJhdGlvbnMgYXJlIGV4ZWN1dGVkIG9uIHRoYXQgb2JqZWN0KQogICAgICAgICAgICBQb3NpdGlvbiA9IFBvc2l0aW9uLnRvU3RyaW5nKCk7CgogICAgICAgICAgICAvLyBwb3NpdGlvbiBpcyBpbiBwZXJjZW50CiAgICAgICAgICAgIGlmIChQb3NpdGlvbi5tYXRjaCgvJS8pKSB7CiAgICAgICAgICAgICAgICBQb3NpdGlvbiA9IHBhcnNlSW50KFBvc2l0aW9uLnJlcGxhY2UoLyUvLCAnJyksIDEwKTsKICAgICAgICAgICAgICAgIGlmIChUeXBlID09PSAndG9wJykgewogICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uID0gcGFyc2VJbnQoV2luZG93SGVpZ2h0ICogKFBvc2l0aW9uIC8gMTAwKSwgMTApICsgU2Nyb2xsVG9wOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoVHlwZSA9PT0gJ2JvdHRvbScpIHsKICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiA9IFdpbmRvd0hlaWdodCArIFNjcm9sbFRvcCAtIHBhcnNlSW50KFdpbmRvd0hlaWdodCAqIChQb3NpdGlvbiAvIDEwMCksIDEwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBoYW5kbGUgYXMgcHgKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBQb3NpdGlvbiA9IHBhcnNlSW50KFBvc2l0aW9uLnJlcGxhY2UoL3B4LywgJycpLCAxMCk7CiAgICAgICAgICAgICAgICBpZiAoVHlwZSA9PT0gJ3RvcCcpIHsKICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiA9IFBvc2l0aW9uICsgU2Nyb2xsVG9wOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoVHlwZSA9PT0gJ2JvdHRvbScpIHsKICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiA9IFdpbmRvd0hlaWdodCArIFNjcm9sbFRvcCAtIFBvc2l0aW9uOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gKFBvc2l0aW9uICsgJ3B4Jyk7CiAgICAgICAgfQoKICAgICAgICBDb3JlLkFwcC5QdWJsaXNoKCdFdmVudC5VSS5EaWFsb2cuU2hvd0RpYWxvZy5CZWZvcmVPcGVuJyk7CgogICAgICAgIC8vIENsb3NlIGFsbCBvcGVuZWQgZGlhbG9ncwovLyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKLy8gICAgICAgICBpZiAoJCgnLkRpYWxvZzp2aXNpYmxlJykubGVuZ3RoKSB7CiAgICAgICAgaWYgKCQoJy5EaWFsb2c6dmlzaWJsZScpLmxlbmd0aCAmJiAhUGFyYW1zLlN0YWNrZWQpIHsKLy8gRU8gU2VydmljZUNhdGFsb2cKICAgICAgICAgICAgVGFyZ2V0TlMuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZzp2aXNpYmxlJykpOwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgRGlhbG9nIGlzIGEgbW9kYWwgZGlhbG9nLCBpbml0aWFsaXplIG92ZXJsYXkKICAgICAgICBpZiAoUGFyYW1zLk1vZGFsKSB7CiAgICAgICAgICAgICQoJzxkaXYgaWQ9Ik92ZXJsYXkiIHRhYmluZGV4PSItMSI+JykuYXBwZW5kVG8oJ2JvZHknKTsKICAgICAgICAgICAgJCgnYm9keScpLmNzcyh7CiAgICAgICAgICAgICAgICAnb3ZlcmZsb3cnOiAnaGlkZGVuJwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgLy8kKCcjT3ZlcmxheScpLmhlaWdodCgkKGRvY3VtZW50KS5oZWlnaHQoKSkuY3NzKCd0b3AnLCAwKTsKCiAgICAgICAgICAgIC8vIElmIHRoZSB1bmRlcmx5aW5nIHBhZ2UgaXMgcGVyaGFwcyB0byBzbWFsbCwgd2llIGV4dGVuZCB0aGUgcGFnZSB0byB3aW5kb3cgaGVpZ2h0IGZvciB0aGUgZGlhbG9nCiAgICAgICAgICAgICQoJ2JvZHknKS5jc3MoJ21pbi1oZWlnaHQnLCAkKHdpbmRvdykuaGVpZ2h0KCkpOwogICAgICAgIH0KCiAgICAgICAgLy8gQnVpbGQgRGlhbG9nIEhUTUwKICAgICAgICAkRGlhbG9nID0gJChEaWFsb2dIVE1MKTsKCiAgICAgICAgLy8gQWRkIHJlc3BvbnNpdmUgZnVuY3Rpb25hbGl0eQogICAgICAgIGlmIChDb3JlLkFwcC5SZXNwb25zaXZlLklzU21hbGxlck9yRXF1YWwoQ29yZS5BcHAuUmVzcG9uc2l2ZS5HZXRTY3JlZW5TaXplKCksICdTY3JlZW5MJykpIHsKICAgICAgICAgICAgRnVsbHNpemVNb2RlID0gdHJ1ZTsKICAgICAgICAgICAgJERpYWxvZy5hZGRDbGFzcygnRnVsbHNpemUnKTsKICAgICAgICB9CgogICAgICAgIGlmIChQYXJhbXMuTW9kYWwpIHsKICAgICAgICAgICAgJERpYWxvZy5hZGRDbGFzcygnTW9kYWwnKTsKICAgICAgICB9CgogICAgICAgIC8vIElmIFBhcmFtIEhUTUwgaXMgcHJvdmlkZWQsIGdldCB0aGUgSFRNTCBkYXRhCiAgICAgICAgLy8gRGF0YSBjYW4gYmUgYSBIVE1MIHN0cmluZyBvciBhbiBqUXVlcnkgb2JqZWN0IHdpdGggY29udGFpbmluZyBIVE1MIGRhdGEKICAgICAgICBpZiAoUGFyYW1zLkhUTUwpIHsKICAgICAgICAgICAgLy8gSWYgdGhlIGRhdGEgaXMgYSBzdHJpbmcsIHRoaXMgaXMgY3JlYXRlZCBkeW5hbWljYWxseSBvciB3YXMgZGVsaXZlcmVkIHZpYSBBSkFYLgogICAgICAgICAgICAvLyBCdXQgaWYgdGhlIGRhdGEgaXMgYSBqUXVlcnlPYmplY3QsIHRoYXQgbWVhbnMsIHRoYXQgdGhlIHByZXBhcmVkIEhUTUwgY29kZSBmb3IgdGhlIGRpYWxvZwogICAgICAgICAgICAvLyB3YXMgb3JpZ2luYWxseSBwdXQgYXMgcGFydCBvZiB0aGUgdHQgaW50byB0aGUgSFRNTCBwYWdlCiAgICAgICAgICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMgKG5vIGRvdWJsZSBJRHMgZXRjLikgd2UgaGF2ZSB0byBjdXQgb3V0IHRoZSBkaWFsb2cgSFRNTCBhbmQKICAgICAgICAgICAgLy8gb25seSB1c2UgaXQgZm9yIHRoZSBkaWFsb2cgaXRzZWxmLgogICAgICAgICAgICAvLyBBZnRlciB0aGUgZGlhbG9nIGlzIGNsb3NlZCBhZ2FpbiB3ZSBoYXZlIHRvIHJldmVydCB0aGlzIGN1dC1vdXQsIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlCiAgICAgICAgICAgIC8vIGNvdWxkIG5vdCBvcGVuIHRoZSBkaWFsb2cgYWdhaW4gKGJlY2F1c2UgdGhlIEhUTUwgd291bGQgYmUgbWlzc2luZykuCiAgICAgICAgICAgIC8vIEJ1dCB3ZSBjYW5ub3QgdXNlIHRoZSBEaWFsb2cgSFRNTCB0byBwdXQgaXQgYmFjayBpbiB0aGUgcGFnZSwgYmVjYXVzZSB0aGlzIEhUTUwgY291bGQgYmUgY2hhbmdlZAogICAgICAgICAgICAvLyBpbiB0aGUgZGlhbG9nLiBTbyB3ZSBoYXZlIHRvIHNhdmUgdGhlIGRhdGEgc29tZXdoZXJlIHdoaWNoIHdhcyBjdXQgb3V0IGFuZCB3cml0ZSBpdCBiYWNrIGxhdGVyLgogICAgICAgICAgICAvLyBCZSBjYXJlZnVsOiBUaGVyZSBjYW4gYmUgbW9yZSB0aGFuIG9uZSBkaWFsb2csIHdlIGhhdmUgdG8gc2F2ZSB0aGUgZGF0YSBkZXBlbmRlbnQgb24gdGhlIGRpYWxvZwoKICAgICAgICAgICAgLy8gR2V0IEhUTUwgd2l0aCBKUyBmdW5jdGlvbiBpbm5lckhUTUwsIGJlY2F1c2UgalF1ZXJ5IGh0bWwoKSBzdHJpcHMgb3V0IHRoZSBzY3JpcHQgYmxvY2tzCiAgICAgICAgICAgIGlmICh0eXBlb2YgUGFyYW1zLkhUTUwgIT09ICdzdHJpbmcnICYmIGlzSlF1ZXJ5T2JqZWN0KFBhcmFtcy5IVE1MKSkgewogICAgICAgICAgICAgICAgLy8gRmlyc3QgZ2V0IHRoZSBkYXRhIHN0cnVjdHVyZSwgd2hpY2ggaXMgKHBlcmhhcHMpIGFscmVhZHkgc2F2ZWQKICAgICAgICAgICAgICAgIC8vIElmIHRoZSBkYXRhIGRvZXMgbm90IGV4aXN0cyBDb3JlLkRhdGEuR2V0IHJldHVybnMgYW4gZW1wdHkgaGFzaAogICAgICAgICAgICAgICAgRGlhbG9nQ29weSA9IENvcmUuRGF0YS5HZXQoJCgnYm9keScpLCAnRGlhbG9nQ29weScpOwogICAgICAgICAgICAgICAgRGlhbG9nQ29weVNlbGVjdG9yID0gQ29yZS5EYXRhLkdldCgkKCdib2R5JyksICdEaWFsb2dDb3B5U2VsZWN0b3InKTsKICAgICAgICAgICAgICAgIEhUTUxCYWNrdXAgPSAoUGFyYW1zLkhUTUwpWzBdLmlubmVySFRNTDsKICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgbmV3IEhUTUwgZGF0YSB0byB0aGUgZGF0YSBzdHJ1Y3R1cmUgYW5kIHNhdmUgaXQgdG8gdGhlIGRvY3VtZW50CiAgICAgICAgICAgICAgICBEaWFsb2dDb3B5W0RpYWxvZ0NvdW50ZXJdID0gSFRNTEJhY2t1cDsKICAgICAgICAgICAgICAgIERpYWxvZ0NvcHlTZWxlY3RvcltEaWFsb2dDb3VudGVyXSA9IFBhcmFtcy5IVE1MOwogICAgICAgICAgICAgICAgQ29yZS5EYXRhLlNldCgkKCdib2R5JyksICdEaWFsb2dDb3B5JywgRGlhbG9nQ29weSk7CiAgICAgICAgICAgICAgICBDb3JlLkRhdGEuU2V0KCQoJ2JvZHknKSwgJ0RpYWxvZ1NlbGVjdG9yJywgRGlhbG9nQ29weVNlbGVjdG9yKTsKICAgICAgICAgICAgICAgIC8vIEFkZGl0aW9uYWxseSwgd2Ugc2F2ZSB0aGUgc2VsZWN0b3IgYXMgZGF0YSBvbiB0aGUgZGlhbG9nIGl0c2VsZiBmb3IgbGF0ZXIgcmVzdG9yaW5nCiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIG9yaWdpbmFsIGRpYWxvZyB0ZW1wbGF0ZSBjb250ZW50IGZyb20gdGhlIHBhZ2UKICAgICAgICAgICAgICAgIFBhcmFtcy5IVE1MLmVtcHR5KCk7CiAgICAgICAgICAgICAgICAvLyBhbmQgdXNlIHRoZSB2YXJpYWJsZSBhcyBzdHJpbmcgKCEhKSB3aXRoIHRoZSBjb250ZW50IHdoaWNoIHdhcyBjdXQgb3V0CiAgICAgICAgICAgICAgICBQYXJhbXMuSFRNTCA9IEhUTUxCYWNrdXA7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIFR5cGUgJ0FsZXJ0JwogICAgICAgIGlmIChQYXJhbXMuVHlwZSA9PT0gJ0FsZXJ0JykgewogICAgICAgICAgICAkRGlhbG9nLmFkZENsYXNzKCdBbGVydCcpOwogICAgICAgICAgICAkRGlhbG9nLmF0dHIoInJvbGUiLCAiYWxlcnRkaWFsb2ciKTsKICAgICAgICAgICAgJENvbnRlbnQgPSAkRGlhbG9nLmZpbmQoJy5Db250ZW50JykuYXBwZW5kKCc8ZGl2IGNsYXNzPSJJbm5lckNvbnRlbnQiPjwvZGl2PicpLmZpbmQoJy5Jbm5lckNvbnRlbnQnKTsKICAgICAgICAgICAgJENvbnRlbnQuYXBwZW5kKCc8aSBjbGFzcz0iZmEgZmEtd2FybmluZyI+PC9pPicpOwogICAgICAgICAgICBpZiAoUGFyYW1zLkhlYWRsaW5lKSB7CiAgICAgICAgICAgICAgICAkQ29udGVudC5hcHBlbmQoJzxoMj4nICsgUGFyYW1zLkhlYWRsaW5lICsgJzwvaDI+Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKFBhcmFtcy5UZXh0KSB7CiAgICAgICAgICAgICAgICAkQ29udGVudC5hcHBlbmQoJzxwPicgKyBQYXJhbXMuVGV4dCArICc8L3A+Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgUGFyYW1zLkJ1dHRvbnMgPSBbewogICAgICAgICAgICAgICAgTGFiZWw6ICdPSycsCiAgICAgICAgICAgICAgICBUeXBlOiAnQ2xvc2UnLAogICAgICAgICAgICAgICAgRnVuY3Rpb246IFBhcmFtcy5PbkNsb3NlCiAgICAgICAgICAgIH1dOwogICAgICAgICAgICAkQ29udGVudC5hcHBlbmQoJzxkaXYgY2xhc3M9IkNlbnRlciBTcGFjaW5nIj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9IkRpYWxvZ0J1dHRvbjEiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIENsb3NlIG9vb1MiPjxzcGFuPicgKyBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnT0snKSArICc8L3NwYW4+PC9idXR0b24+PC9kaXY+Jyk7CiAgICAgICAgfQogICAgICAgIC8vIERlZmluZSBkaWZmZXJlbnQgb3RoZXIgdHlwZXMgaGVyZS4uLgogICAgICAgIGVsc2UgaWYgKFBhcmFtcy5UeXBlID09PSAnU2VhcmNoJykgewogICAgICAgICAgICAkRGlhbG9nLmFkZENsYXNzKCdTZWFyY2gnKTsKICAgICAgICAgICAgJERpYWxvZy5hdHRyKCJyb2xlIiwgImRpYWxvZyIpOwogICAgICAgICAgICAkQ29udGVudCA9ICREaWFsb2cuZmluZCgnLkNvbnRlbnQnKTsKICAgICAgICAgICAgaWYgKFBhcmFtcy5IVE1MKSB7CiAgICAgICAgICAgICAgICAkQ29udGVudC5hcHBlbmQoUGFyYW1zLkhUTUwpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIElmIG5vIHR5cGUgaXMgZGVmaW5lZCwgZGVmYXVsdCB0eXBlIGlzIHVzZWQKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJERpYWxvZy5hdHRyKCJyb2xlIiwgImRpYWxvZyIpOwogICAgICAgICAgICAkQ29udGVudCA9ICREaWFsb2cuZmluZCgnLkNvbnRlbnQnKTsKICAgICAgICAgICAgLy8gYnV0dG9ucyBhcmUgZGVmaW5lZCBvbmx5IGluIGRlZmF1bHQgdHlwZQogICAgICAgICAgICBpZiAoUGFyYW1zLkJ1dHRvbnMpIHsKICAgICAgICAgICAgICAgICRDb250ZW50LmFwcGVuZCgnPGRpdiBjbGFzcz0iSW5uZXJDb250ZW50Ij48L2Rpdj4nKS5maW5kKCcuSW5uZXJDb250ZW50JykuYXBwZW5kKFBhcmFtcy5IVE1MKTsKICAgICAgICAgICAgICAgICRCdXR0b25Gb290ZXIgPSAkKCc8ZGl2IGNsYXNzPSJDb250ZW50Rm9vdGVyIENlbnRlciI+PC9kaXY+Jyk7CiAgICAgICAgICAgICAgICAkLmVhY2goUGFyYW1zLkJ1dHRvbnMsIGZ1bmN0aW9uIChJbmRleCwgVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgQ2xhc3NlcyA9ICdDYWxsRm9yQWN0aW9uJzsKICAgICAgICAgICAgICAgICAgICBpZiAoVmFsdWUuVHlwZSA9PT0gJ0Nsb3NlJykgewogICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2VzICs9ICcgQ2xvc2UnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoVmFsdWUuQ2xhc3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NlcyArPSAnICcgKyBWYWx1ZS5DbGFzczsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJEJ1dHRvbkZvb3Rlci5hcHBlbmQoJzxidXR0b24gaWQ9IkRpYWxvZ0J1dHRvbicgKyAoSW5kZXggLSAwICsgMSkgKyAnIiBjbGFzcz0iJyArIENsYXNzZXMgKyAnIiB0eXBlPSJidXR0b24iPjxzcGFuPicgKyBWYWx1ZS5MYWJlbCArICc8L3NwYW4+PC9idXR0b24+ICcpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAkQnV0dG9uRm9vdGVyLmFwcGVuZFRvKCRDb250ZW50KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChQYXJhbXMuSFRNTCkgewogICAgICAgICAgICAgICAgICAgICRDb250ZW50LmFwcGVuZChQYXJhbXMuSFRNTCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIElmIFRpdGxlIGlzIGRlZmluZWQsIGFkZCBkaWFsb2cgdGl0bGUKICAgICAgICBpZiAoUGFyYW1zLlRpdGxlKSB7CiAgICAgICAgICAgIGlmICggQ3VzdG9tZXJJbnRlcmZhY2UgKSB7CiAgICAgICAgICAgICAgICAkRGlhbG9nLmNoaWxkcmVuKCdkaXYuSGVhZGVyJykuYXBwZW5kKCc8aDI+JyArIFBhcmFtcy5UaXRsZSArICc8L2gyPicpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJERpYWxvZy5jaGlsZHJlbignZGl2LkhlYWRlcicpLmFwcGVuZCgnPGgxPicgKyBQYXJhbXMuVGl0bGUgKyAnPC9oMT4nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQWRkIERpYWxvZyB0byBwYWdlCiAgICAgICAgJERpYWxvZy5hcHBlbmRUbygnYm9keScpOwoKICAgICAgICAvLyBDaGVjayBpZiAiQ29udGVudEZvb3RlciIgaXMgdXNlZCBpbiBDb250ZW50CiAgICAgICAgaWYgKCREaWFsb2cuZmluZCgnLkNvbnRlbnQgLkNvbnRlbnRGb290ZXInKS5sZW5ndGgpIHsKICAgICAgICAgICAgLy8gY2hhbmdlIGRlZmF1bHQgRm9vdGVyCiAgICAgICAgICAgICREaWFsb2cuZmluZCgnLkZvb3RlcicpLmFkZENsYXNzKCdDb250ZW50Rm9vdGVyJyk7CiAgICAgICAgfQoKICAgICAgICAvLyBOb3cgYWRkIHRoZSBkaWFsb2cgbnVtYmVyIHRvIHRoZSBkaWFsb2cgZGF0YSB0byByZXN0b3JlIHRoZSBIVE1MIGxhdGVyCiAgICAgICAgQ29yZS5EYXRhLlNldCgkRGlhbG9nLCAnRGlhbG9nQ291bnRlcicsIERpYWxvZ0NvdW50ZXIpOwogICAgICAgIC8vIEluY3JlYXNlIHRoZSBkaWFsb2cgbnVtYmVyIGZvciB0aGUgbmV4dCBwb3NzaWJsZSBkaWFsb2cKICAgICAgICBEaWFsb2dDb3VudGVyKys7CgogICAgICAgIC8vIFNldCBwb3NpdGlvbiBmb3IgRGlhbG9nCiAgICAgICAgaWYgKFBhcmFtcy5UeXBlID09PSAnQWxlcnQnKSB7CiAgICAgICAgICAgIGlmICggQ3VzdG9tZXJJbnRlcmZhY2UgKSB7CiAgICAgICAgICAgICAgICAkRGlhbG9nLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgdG9wOiAkKHdpbmRvdykuaGVpZ2h0KCkgKiAwLjIsCiAgICAgICAgICAgICAgICAgICAgbGVmdDogTWF0aC5yb3VuZCgoJCh3aW5kb3cpLndpZHRoKCkgLSAkRGlhbG9nLndpZHRoKCkpIC8gMikKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJERpYWxvZy5jc3MoewogICAgICAgICAgICAgICAgICAgIHRvcDogJCh3aW5kb3cpLnNjcm9sbFRvcCgpICsgKCQod2luZG93KS5oZWlnaHQoKSAqIDAuMyksCiAgICAgICAgICAgICAgICAgICAgbGVmdDogTWF0aC5yb3VuZCgoJCh3aW5kb3cpLndpZHRoKCkgLSAkRGlhbG9nLndpZHRoKCkpIC8gMikKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAodHlwZW9mIFBhcmFtcy5Qb3NpdGlvblRvcCAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgJERpYWxvZy5jc3MoJ3RvcCcsIENhbGN1bGF0ZURpYWxvZ1Bvc2l0aW9uKFBhcmFtcy5Qb3NpdGlvblRvcCwgJ3RvcCcpKTsKICAgICAgICB9CiAgICAgICAgaWYgKHR5cGVvZiBQYXJhbXMuUG9zaXRpb25MZWZ0ICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICBpZiAoUGFyYW1zLlBvc2l0aW9uTGVmdCA9PT0gJ0NlbnRlcicpIHsKICAgICAgICAgICAgICAgICREaWFsb2cuY3NzKCdsZWZ0JywgTWF0aC5yb3VuZCgoJCh3aW5kb3cpLndpZHRoKCkgLSAkRGlhbG9nLndpZHRoKCkpIC8gMikpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJERpYWxvZy5jc3MoJ2xlZnQnLCBQYXJhbXMuUG9zaXRpb25MZWZ0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAodHlwZW9mIFBhcmFtcy5Qb3NpdGlvbkJvdHRvbSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgJERpYWxvZy5jc3MoJ2JvdHRvbScsIENhbGN1bGF0ZURpYWxvZ1Bvc2l0aW9uKFBhcmFtcy5Qb3NpdGlvbkJvdHRvbSwgJ2JvdHRvbScpKTsKICAgICAgICB9CiAgICAgICAgaWYgKHR5cGVvZiBQYXJhbXMuUG9zaXRpb25SaWdodCAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgJERpYWxvZy5jc3MoJ3JpZ2h0JywgUGFyYW1zLlBvc2l0aW9uUmlnaHQpOwogICAgICAgIH0KCiAgICAgICAgLy8gQ2hlY2sgd2luZG93IGhlaWdodCBhbmQgYWRqdXN0IHRoZSBzY3JvbGxhYmxlIGhlaWdodCBvZiBJbm5lckNvbnRlbnQKICAgICAgICBBZGp1c3RTY3JvbGxhYmxlSGVpZ2h0KFBhcmFtcy5BbGxvd0F1dG9Hcm93KTsKCiAgICAgICAgLy8gQWRqdXN0IGRpYWxvZyBwb3NpdGlvbiBvbiBtb2JpbGUgZGV2aWNlcwogICAgICAgIGlmICggRnVsbHNpemVNb2RlICYmICFDdXN0b21lckludGVyZmFjZSApIHsKICAgICAgICAgICAgJERpYWxvZy5jc3MoJ3RvcCcsICQod2luZG93KS5zY3JvbGxUb3AoKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBBZGQgZXZlbnQtaGFuZGxpbmcsIG5vdCBhbGxvd2VkIG9uIG1vYmlsZSBkZXZpY2VzCiAgICAgICAgaWYgKCAhRnVsbHNpemVNb2RlICYmICFDdXN0b21lckludGVyZmFjZSApIHsKICAgICAgICAgICAgJERpYWxvZy5kcmFnZ2FibGUoewogICAgICAgICAgICAgICAgY29udGFpbm1lbnQ6ICdib2R5JywKICAgICAgICAgICAgICAgIGhhbmRsZTogJy5IZWFkZXInLAogICAgICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIC8vIEZpcmUgUHViU3ViIGV2ZW50IGZvciBkcmFnc3RhcnQKICAgICAgICAgICAgICAgICAgICAvLyAodG8gaGFuZGxlIG1vcmUgZGVwZW5kZW5jaWVzIGluIHRoZWlyIG93biBuYW1lc3BhY2VzKQogICAgICAgICAgICAgICAgICAgIENvcmUuQXBwLlB1Ymxpc2goJ0V2ZW50LlVJLkRpYWxvZy5TaG93RGlhbG9nLkRyYWdTdGFydCcsICREaWFsb2cpOwoKICAgICAgICAgICAgICAgICAgICAvLyBIaWRlIGFueSBwb3NzaWJseSBleGlzdGluZyB0b29sdGlwcyBhcyB0aGV5IHdpbGwgbm90IGJlIG1vdmVkCiAgICAgICAgICAgICAgICAgICAgLy8gIHdpdGggdGhpcyBkaWFsb2cuCiAgICAgICAgICAgICAgICAgICAgaWYgKENvcmUuRm9ybSAmJiBDb3JlLkZvcm0uRXJyb3JUb29sdGlwcykgewogICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkZvcm0uRXJyb3JUb29sdGlwcy5IaWRlVG9vbHRpcCgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzdG9wOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBDb3JlLkFwcC5QdWJsaXNoKCdFdmVudC5VSS5EaWFsb2cuU2hvd0RpYWxvZy5EcmFnU3RvcCcsICREaWFsb2cpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIC8vIEFkZCBidXR0b24gZXZlbnRzCiAgICAgICAgaWYgKFBhcmFtcy5CdXR0b25zKSB7CiAgICAgICAgICAgICQuZWFjaChQYXJhbXMuQnV0dG9ucywgZnVuY3Rpb24gKEluZGV4LCBWYWx1ZSkgewogICAgICAgICAgICAgICAgJCgnI0RpYWxvZ0J1dHRvbicgKyAoSW5kZXggLSAwICsgMSkpLmNsaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoVmFsdWUuVHlwZSA9PT0gJ1N1Ym1pdCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQuaXNGdW5jdGlvbihWYWx1ZS5GdW5jdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChWYWx1ZS5GdW5jdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFN1Ym1pdEZ1bmN0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0U3VibWl0RnVuY3Rpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChWYWx1ZS5UeXBlID09PSAnQ2xvc2UnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLmlzRnVuY3Rpb24oVmFsdWUuRnVuY3Rpb24pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVmFsdWUuRnVuY3Rpb24oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRDbG9zZUZ1bmN0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0Q2xvc2VGdW5jdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJC5pc0Z1bmN0aW9uKFZhbHVlLkZ1bmN0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUuRnVuY3Rpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIC8vIEFkZCBldmVudC1oYW5kbGluZyBmb3IgQ2xvc2UtQnV0dG9ucyBhbmQgLUxpbmtzCiAgICAgICAgJERpYWxvZy5maW5kKCcuSGVhZGVyIGEuQ2xvc2UnKS5jbGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIEhhbmRsZUNsb3NpbmdBY3Rpb24oKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAvLyBBZGQgQ2xvc2VPbkNsaWNrT3V0c2lkZSBmdW5jdGlvbmFsaXR5CiAgICAgICAgaWYgKFBhcmFtcy5DbG9zZU9uQ2xpY2tPdXRzaWRlKSB7CiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9mZignY2xpY2suRGlhbG9nJykub24oJ2NsaWNrLkRpYWxvZycsIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICAgICAgICAgLy8gSWYgdGFyZ2V0IGVsZW1lbnQgaXMgcmVtb3ZlZCBiZWZvcmUgdGhpcyBldmVudCB0cmlnZ2VycywgdGhlIGVuY2xvc2luZyBkaXYuRGlhbG9nIGNhbid0IGJlIGZvdW5kIGFueW1vcmUKICAgICAgICAgICAgICAgIC8vIFdlIGNoZWNrLCBpZiB3ZSBjYW4gZmluZCBhIHBhcmVudCBIVE1MIGVsZW1lbnQgdG8gYmUgc3VyZSwgdGhhdCB0aGUgZWxlbWVudCBpcyBub3QgcmVtb3ZlZAogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICQoZXZlbnQudGFyZ2V0KS5wYXJlbnRzKCdodG1sJykubGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgJiYgJChldmVudC50YXJnZXQpLmNsb3Nlc3QoJ2Rpdi5EaWFsb2cnKS5sZW5ndGggPT09IDAKCiAgICAgICAgICAgICAgICAgICAgLy8gQ2FzZSBhdXRvY29tcGxldGUgZHJvcGRvd24gaW4gbW9kYWwgZGlhbG9ncwogICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGN1cnJlbnRseSBvbmx5IG9jY3VycyB3aGVuIHVzaW5nIGR5bmFtaWMgZmllbGQgcmVmZXJlbmNlIHNlYXJjaCBmaWVsZHMgaW4gdGlja2V0IHNlYXJjaCBvciBjb25maWcgaXRlbSBzZWFyY2gKICAgICAgICAgICAgICAgICAgICAmJiAhJChldmVudC50YXJnZXQpLmhhc0NsYXNzKCd1aS1tZW51LWl0ZW0td3JhcHBlcicpCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICBIYW5kbGVDbG9zaW5nQWN0aW9uKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgLy8gQWRkIHJlc2l6ZSBldmVudCBoYW5kbGVyIGZvciBjYWxjdWxhdGluZyB0aGUgc2Nyb2xsIGhlaWdodAogICAgICAgICQod2luZG93KS5vZmYoJ3Jlc2l6ZS5EaWFsb2cnKS5vbigncmVzaXplLkRpYWxvZycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgQWRqdXN0U2Nyb2xsYWJsZUhlaWdodChQYXJhbXMuQWxsb3dBdXRvR3Jvdyk7CiAgICAgICAgfSk7CgogICAgICAgIENvcmUuQXBwLlN1YnNjcmliZSgnRXZlbnQuQXBwLlJlc3BvbnNpdmUuU21hbGxlck9yRXF1YWxTY3JlZW5MJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAvLyBEaWFsb2cgc2hvdWxkIGJlIGZ1bGxzaXplLCBpZiBvbiBzbWFsbGVyIHNjcmVlbnMKICAgICAgICAgICAgJERpYWxvZy5hZGRDbGFzcygnRnVsbHNpemUnKTsKICAgICAgICB9KTsKCiAgICAgICAgQ29yZS5BcHAuU3Vic2NyaWJlKCdFdmVudC5BcHAuUmVzcG9uc2l2ZS5TY3JlZW5YTCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgJERpYWxvZy5yZW1vdmVDbGFzcygnRnVsbHNpemUnKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gSW5pdCBLZXlFdmVudC1Mb2dnZXIKICAgICAgICBJbml0S2V5RXZlbnQoUGFyYW1zLkNsb3NlT25Fc2NhcGUpOwoKICAgICAgICBDb3JlLlVJLklucHV0RmllbGRzLkFjdGl2YXRlKCREaWFsb2cpOwoKICAgICAgICAvLyBGb2N1cyBmaXJzdCBmb2N1c2FibGUgZWxlbWVudAogICAgICAgIEZvY3VzRmlyc3RFbGVtZW50KCk7CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgU2hvd0NvbnRlbnREaWFsb2cKICAgICAqIEBtZW1iZXJvZiBDb3JlLlVJLkRpYWxvZwogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gSFRNTCAtIFRoZSBjb250ZW50IEhUTUwgd2hpY2ggc2hvdWxkIGJlIHNob3duLgogICAgICogQHBhcmFtIHtTdHJpbmd9IFRpdGxlIC0gVGhlIHRpdGxlIG9mIHRoZSBkaWFsb2cuCiAgICAgKiBAcGFyYW0ge051bWJlcnxTdHJpbmd9IFBvc2l0aW9uVG9wIC0gVGhlIHRvcCBwb3NpdGlvbiB0aGUgZGlhbG9nIGlzIHBvc2l0aW9uZWQgaW5pdGlhbGx5LgogICAgICogQHBhcmFtIHtOdW1lcnxTdHJpbmd9IFBvc2l0aW9uTGVmdCAtIFRoZSBsZWZ0IHBvc2l0aW9uIHRoZSBkaWFsb2cgaXMgcG9zaXRpb25lZCBpbml0aWFsbHkuCiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IE1vZGFsIC0gSWYgZGVmaW5lZCBhbmQgc2V0IHRvIHRydWUsIGFuIG92ZXJsYXkgaXMgc2hvd24gZm9yIGEgbW9kYWwgZGlhbG9nLgogICAgICogQHBhcmFtIHtBcnJheX0gQnV0dG9ucyAtIFRoZSBidXR0b24gYXJyYXkuCiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IEFsbG93QXV0b0dyb3cgLSBJZiB0cnVlLCB0aGUgSW5uZXJDb250ZW50IG9mIHRoZSBkaWFsb2cgY2FuIHJlc2l6ZSB1bnRpbCB0aGUgbWF4IHdpbmRvdyBoZWlnaHQgaXMgcmVhY2hlZCwgaWYgZmFsc2UgKGRlZmF1bHQpLCBJbm5lckNvbnRlbnQgb2Ygc21hbGwgZGlhbG9ncyBkb2VzIG5vdCByZXNpemUgb3ZlciAyMDBweC4KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBTaG93cyBhIGRlZmF1bHQgZGlhbG9nLgogICAgICovCiAgICBUYXJnZXROUy5TaG93Q29udGVudERpYWxvZyA9IGZ1bmN0aW9uIChIVE1MLCBUaXRsZSwgUG9zaXRpb25Ub3AsIFBvc2l0aW9uTGVmdCwgTW9kYWwsIEJ1dHRvbnMsIEFsbG93QXV0b0dyb3cpIHsKICAgICAgICBUYXJnZXROUy5TaG93RGlhbG9nKHsKICAgICAgICAgICAgSFRNTDogSFRNTCwKICAgICAgICAgICAgVGl0bGU6IFRpdGxlLAogICAgICAgICAgICBNb2RhbDogTW9kYWwsCiAgICAgICAgICAgIENsb3NlT25DbGlja091dHNpZGU6IHRydWUsCiAgICAgICAgICAgIENsb3NlT25Fc2NhcGU6IHRydWUsCiAgICAgICAgICAgIFBvc2l0aW9uVG9wOiBQb3NpdGlvblRvcCwKICAgICAgICAgICAgUG9zaXRpb25MZWZ0OiBQb3NpdGlvbkxlZnQsCiAgICAgICAgICAgIEJ1dHRvbnM6IEJ1dHRvbnMsCiAgICAgICAgICAgIEFsbG93QXV0b0dyb3c6IEFsbG93QXV0b0dyb3cKICAgICAgICB9KTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBTaG93V2FpdGluZ0RpYWxvZwogICAgICogQG1lbWJlcm9mIENvcmUuVUkuRGlhbG9nCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBUaXRsZSAtIFRoZSB0aXRsZSBvZiB0aGUgZGlhbG9nLgogICAgICogQHBhcmFtIHtTdHJpbmd9IFRleHQgLSBUaGUgdGV4dCBvZiB0aGUgZGlhbG9nLgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFNob3dzIGEgd2FpdGluZyBkaWFsb2cgKHdpdGggc3Bpbm5lciBpY29uKSBhbmQgY3VzdG9taXphYmxlIHRpdGxlIGFuZCB0ZXh0CiAgICAgKi8KICAgIFRhcmdldE5TLlNob3dXYWl0aW5nRGlhbG9nID0gZnVuY3Rpb24gKFRpdGxlLCBUZXh0KSB7CgogICAgICAgIHZhciBEaWFsb2dUZW1wbGF0ZSA9IENvcmUuVGVtcGxhdGUuUmVuZGVyKCdEaWFsb2cvV2FpdGluZycsIHsKICAgICAgICAgICAgVGV4dDogVGV4dAogICAgICAgIH0pOwoKICAgICAgICBUYXJnZXROUy5TaG93RGlhbG9nKHsKICAgICAgICAgICAgSFRNTDogRGlhbG9nVGVtcGxhdGUsCiAgICAgICAgICAgIFRpdGxlOiBUaXRsZSwKICAgICAgICAgICAgTW9kYWw6IHRydWUsCiAgICAgICAgICAgIENsb3NlT25DbGlja091dHNpZGU6IGZhbHNlLAogICAgICAgICAgICBDbG9zZU9uRXNjYXBlOiBmYWxzZSwKICAgICAgICAgICAgUG9zaXRpb25Ub3A6ICcyMCUnLAogICAgICAgICAgICBQb3NpdGlvbkxlZnQ6ICdDZW50ZXInLAogICAgICAgICAgICBBbGxvd0F1dG9Hcm93OiB0cnVlLAogICAgICAgICAgICBIaWRlSGVhZGVyOiB0cnVlLAogICAgICAgICAgICBIaWRlRm9vdGVyOiB0cnVlCiAgICAgICAgfSk7CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgTWFrZURpYWxvZ1dhaXQKICAgICAqIEBtZW1iZXJvZiBDb3JlLlVJLkRpYWxvZwogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgU2hvd3MgYSBzcGlubmVyIG92ZXJsYXkgb24gdGhlIGN1cnJlbnRseSB2aXNpYmxlIG1vZGFsIGRpYWxvZy4gSXMgbWVhbnQgZm9yIHNob3dpbmcgdGhlIHVzZXIgdGhhdCBzb21ldGhpbmcgaXMgYWJvdXQKICAgICAqICAgICAgdG8gaGFwcGVuLCBlLmcuIGlmIGNoYW5naW5nIGEgZmllbGQgd2l0aGluIGEgZGlhbG9nIGNhdXNlcyBhIHBhZ2UgcmVsb2FkLgogICAgICovCiAgICBUYXJnZXROUy5NYWtlRGlhbG9nV2FpdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAkKCcuRGlhbG9nOnZpc2libGUgLklubmVyQ29udGVudCcpLnByZXBlbmQoJzxkaXYgY2xhc3M9IldhaXRpbmciPjxpIGNsYXNzPSJmYSBmYS1zcGlubmVyIGZhLXNwaW4iPjwvaT48L2Rpdj4nKS5maW5kKCcuV2FpdGluZycpLmZhZGVJbigpOwogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIFNob3dBbGVydAogICAgICogQG1lbWJlcm9mIENvcmUuVUkuRGlhbG9nCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBIZWFkbGluZSAtIFRoZSBib2xkIGhlYWRsaW5lIHRleHQuCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gVGV4dCAtIFRoZSBkZXNjcmlwdGlvbi4KICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IENsb3NlRnVuY3Rpb24gLSBUaGUgc3BlY2lhbCBmdW5jdGlvbiB3aGljaCBpcyBzdGFydGVkIG9uIGNsb3NpbmcgdGhlIGRpYWxvZwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25hbCwgaWYgdXNlZCBhbHNvIHRoZSByZW1vdmluZyBvZiB0aGUgZGlhbG9nIGl0c2VsZiBtdXN0IGJlIGhhbmRsZWQpLgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFNob3dzIGFuIGFsZXJ0IGRpYWxvZy4KICAgICAqLwogICAgVGFyZ2V0TlMuU2hvd0FsZXJ0ID0gZnVuY3Rpb24gKEhlYWRsaW5lLCBUZXh0LCBDbG9zZUZ1bmN0aW9uKSB7CiAgICAgICAgVGFyZ2V0TlMuU2hvd0RpYWxvZyh7CiAgICAgICAgICAgIFR5cGU6ICdBbGVydCcsCiAgICAgICAgICAgIE1vZGFsOiB0cnVlLAogICAgICAgICAgICBUaXRsZTogSGVhZGxpbmUsCiAgICAgICAgICAgIFRleHQ6IFRleHQsCiAgICAgICAgICAgIE9uQ2xvc2U6IENsb3NlRnVuY3Rpb24KICAgICAgICB9KTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBDbG9zZURpYWxvZwogICAgICogQG1lbWJlcm9mIENvcmUuVUkuRGlhbG9nCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSBPYmplY3QgLSBUaGUgalF1ZXJ5IG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIGRpYWxvZyBvciBhbnkgY2hpbGQgZWxlbWVudCBvZiBpdCwgd2hpY2ggc2hvdWxkIGJlIGNsb3NlZC4KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBDbG9zZXMgYWxsIGRpYWxvZ3Mgc3BlY2lmaWVkLgogICAgICovCiAgICBUYXJnZXROUy5DbG9zZURpYWxvZyA9IGZ1bmN0aW9uIChPYmplY3QpIHsKICAgICAgICB2YXIgJERpYWxvZywgJERpYWxvZ1NlbGVjdG9yLCBEaWFsb2dDb3B5LCBEaWFsb2dTZWxlY3RvckRhdGEsIEludGVybmFsRGlhbG9nQ291bnRlciwgQmFja3VwSFRNTDsKICAgICAgICAkRGlhbG9nID0gJChPYmplY3QpLmNsb3Nlc3QoJy5EaWFsb2c6dmlzaWJsZScpOwoKICAgICAgICAvLyBHZXQgdGhlIG9yaWdpbmFsIGRpYWxvZyBudW1iZXIgZm9yIHRoZSBjb250ZW50IHRlbXBsYXRlCiAgICAgICAgSW50ZXJuYWxEaWFsb2dDb3VudGVyID0gQ29yZS5EYXRhLkdldCgkRGlhbG9nLCAnRGlhbG9nQ291bnRlcicpOwoKICAgICAgICAvLyBwdWJsaXNoIGNsb3NlIGV2ZW50CiAgICAgICAgQ29yZS5BcHAuUHVibGlzaCgnRXZlbnQuVUkuRGlhbG9nLkNsb3NlRGlhbG9nLkNsb3NlJywgWyREaWFsb2ddKTsKCi8vIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwovLyAgICAgICAgICREaWFsb2cucmVtb3ZlKCk7Ci8vICAgICAgICAgJCgnI092ZXJsYXknKS5yZW1vdmUoKTsKLy8gICAgICAgICAkKCdib2R5JykuY3NzKHsKLy8gICAgICAgICAgICAgJ292ZXJmbG93JzogJ2F1dG8nCi8vICAgICAgICAgfSk7Ci8vICAgICAgICAgJChkb2N1bWVudCkudW5iaW5kKCdrZXlkb3duLkRpYWxvZycpLnVuYmluZCgna2V5cHJlc3MuRGlhbG9nJykudW5iaW5kKCdjbGljay5EaWFsb2cnKTsKLy8gICAgICAgICAkKHdpbmRvdykudW5iaW5kKCdyZXNpemUuRGlhbG9nJyk7Ci8vICAgICAgICAgJCgnYm9keScpLmNzcygnbWluLWhlaWdodCcsICdhdXRvJyk7Ci8vCi8vICAgICAgICAgLy8gUmV2ZXJ0IG9yaWduYWwgaHRtbAovLyAgICAgICAgIGlmIChJbnRlcm5hbERpYWxvZ0NvdW50ZXIpIHsKLy8gICAgICAgICAgICAgRGlhbG9nQ29weSA9IENvcmUuRGF0YS5HZXQoJCgnYm9keScpLCAnRGlhbG9nQ29weScpOwovLyAgICAgICAgICAgICBEaWFsb2dTZWxlY3RvckRhdGEgPSBDb3JlLkRhdGEuR2V0KCQoJ2JvZHknKSwgJ0RpYWxvZ1NlbGVjdG9yJyk7Ci8vICAgICAgICAgICAgIC8vIEdldCBzYXZlZCBIVE1MCi8vICAgICAgICAgICAgIGlmICh0eXBlb2YgRGlhbG9nQ29weSAhPT0gJ3VuZGVmaW5lZCcpIHsKLy8gICAgICAgICAgICAgICAgIEJhY2t1cEhUTUwgPSBEaWFsb2dDb3B5W0ludGVybmFsRGlhbG9nQ291bnRlcl07Ci8vICAgICAgICAgICAgICAgICAkRGlhbG9nU2VsZWN0b3IgPSBEaWFsb2dTZWxlY3RvckRhdGFbSW50ZXJuYWxEaWFsb2dDb3VudGVyXTsKLy8KLy8gICAgICAgICAgICAgICAgIC8vIElmIEhUTUwgY291bGQgYmUgcmVzdG9yZWQsIHdyaXRlIGl0IGJhY2sgaW50byB0aGUgcGFnZQovLyAgICAgICAgICAgICAgICAgaWYgKEJhY2t1cEhUTUwgJiYgQmFja3VwSFRNTC5sZW5ndGgpIHsKLy8gICAgICAgICAgICAgICAgICAgICAkRGlhbG9nU2VsZWN0b3IuYXBwZW5kKEJhY2t1cEhUTUwpOwovLyAgICAgICAgICAgICAgICAgfQovLwovLyAgICAgICAgICAgICAgICAgLy8gZGVsZXRlIHRoaXMgdmFyaWFibGUgZnJvbSB0aGUgb2JqZWN0Ci8vICAgICAgICAgICAgICAgICBkZWxldGUgRGlhbG9nQ29weVtJbnRlcm5hbERpYWxvZ0NvdW50ZXJdOwovLyAgICAgICAgICAgICAgICAgZGVsZXRlIERpYWxvZ1NlbGVjdG9yRGF0YVtJbnRlcm5hbERpYWxvZ0NvdW50ZXJdOwovLyAgICAgICAgICAgICB9Ci8vCi8vICAgICAgICAgICAgIC8vIHdyaXRlIHRoZSBuZXcgRGlhbG9nQ29weSBiYWNrCi8vICAgICAgICAgICAgIENvcmUuRGF0YS5TZXQoJCgnYm9keScpLCAnRGlhbG9nQ29weScsIERpYWxvZ0NvcHkpOwovLyAgICAgICAgIH0KICAgICAgICBpZiAoJERpYWxvZy5sZW5ndGggPiAxICYmICREaWFsb2dbJERpYWxvZy5sZW5ndGggLSAxXS5kYXRhc2V0LnN0YWNrZWQpIHsKICAgICAgICAgICAgJCgkRGlhbG9nWyREaWFsb2cubGVuZ3RoIC0gMV0pLnJlbW92ZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICREaWFsb2cucmVtb3ZlKCk7CiAgICAgICAgICAgICQoJyNPdmVybGF5JykucmVtb3ZlKCk7CiAgICAgICAgICAgICQoJ2JvZHknKS5jc3MoewogICAgICAgICAgICAgICAgJ292ZXJmbG93JzogJ2F1dG8nCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKGRvY3VtZW50KS51bmJpbmQoJ2tleWRvd24uRGlhbG9nJykudW5iaW5kKCdrZXlwcmVzcy5EaWFsb2cnKS51bmJpbmQoJ2NsaWNrLkRpYWxvZycpOwogICAgICAgICAgICAkKHdpbmRvdykudW5iaW5kKCdyZXNpemUuRGlhbG9nJyk7CiAgICAgICAgICAgICQoJ2JvZHknKS5jc3MoJ21pbi1oZWlnaHQnLCAnYXV0bycpOwoKICAgICAgICAgICAgLy8gUmV2ZXJ0IG9yaWduYWwgaHRtbAogICAgICAgICAgICBpZiAoSW50ZXJuYWxEaWFsb2dDb3VudGVyKSB7CiAgICAgICAgICAgICAgICBEaWFsb2dDb3B5ID0gQ29yZS5EYXRhLkdldCgkKCdib2R5JyksICdEaWFsb2dDb3B5Jyk7CiAgICAgICAgICAgICAgICBEaWFsb2dTZWxlY3RvckRhdGEgPSBDb3JlLkRhdGEuR2V0KCQoJ2JvZHknKSwgJ0RpYWxvZ1NlbGVjdG9yJyk7CiAgICAgICAgICAgICAgICAvLyBHZXQgc2F2ZWQgSFRNTAogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBEaWFsb2dDb3B5ICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgICAgIEJhY2t1cEhUTUwgPSBEaWFsb2dDb3B5W0ludGVybmFsRGlhbG9nQ291bnRlcl07CiAgICAgICAgICAgICAgICAgICAgJERpYWxvZ1NlbGVjdG9yID0gRGlhbG9nU2VsZWN0b3JEYXRhW0ludGVybmFsRGlhbG9nQ291bnRlcl07CgogICAgICAgICAgICAgICAgICAgIC8vIElmIEhUTUwgY291bGQgYmUgcmVzdG9yZWQsIHdyaXRlIGl0IGJhY2sgaW50byB0aGUgcGFnZQogICAgICAgICAgICAgICAgICAgIGlmIChCYWNrdXBIVE1MICYmIEJhY2t1cEhUTUwubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICREaWFsb2dTZWxlY3Rvci5hcHBlbmQoQmFja3VwSFRNTCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvLyBkZWxldGUgdGhpcyB2YXJpYWJsZSBmcm9tIHRoZSBvYmplY3QKICAgICAgICAgICAgICAgICAgICBkZWxldGUgRGlhbG9nQ29weVtJbnRlcm5hbERpYWxvZ0NvdW50ZXJdOwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBEaWFsb2dTZWxlY3RvckRhdGFbSW50ZXJuYWxEaWFsb2dDb3VudGVyXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyB3cml0ZSB0aGUgbmV3IERpYWxvZ0NvcHkgYmFjawogICAgICAgICAgICAgICAgQ29yZS5EYXRhLlNldCgkKCdib2R5JyksICdEaWFsb2dDb3B5JywgRGlhbG9nQ29weSk7CiAgICAgICAgICAgIH0KICAgICAgICB9Ci8vIEVPIFNlcnZpY2VDYXRhbG9nCiAgICB9OwoKICAgIHJldHVybiBUYXJnZXROUzsKfShDb3JlLlVJLkRpYWxvZyB8fCB7fSkpOwo=</File>
        <File Location="var/httpd/htdocs/js/Core.Agent.ITSMServiceZoom.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNCBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uZGUvCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgQ29yZSA9IENvcmUgfHwge307CkNvcmUuQWdlbnQgPSBDb3JlLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UgQ29yZS5BZ2VudC5UaWNrZXRab29tCiAqIEBtZW1iZXJvZiBDb3JlLkFnZW50CiAqIEBhdXRob3IKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgVGlja2V0Wm9vbS4KICovCkNvcmUuQWdlbnQuSVRTTVNlcnZpY2Vab29tID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgICBUYXJnZXROUy5SZXNpemVJZnJhbWUgPSBmdW5jdGlvbihJZnJhbWUpIHsKICAgICAgICBJZnJhbWUgPSBpc0pRdWVyeU9iamVjdChJZnJhbWUpID8gSWZyYW1lLmdldCgwKSA6IElmcmFtZTsKCiAgICAgICAgdmFyICRJZnJhbWVDb250ZW50ID0gJChJZnJhbWUuY29udGVudERvY3VtZW50IHx8IElmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50KSwKICAgICAgICAgICAgTmV3SGVpZ2h0ID0gJElmcmFtZUNvbnRlbnQuaGVpZ2h0KCk7CiAgICAgICAgaWYgKCFOZXdIZWlnaHQgfHwgaXNOYU4oTmV3SGVpZ2h0KSkgewogICAgICAgICAgICBOZXdIZWlnaHQgPSAxMDA7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBpZiAoTmV3SGVpZ2h0ID4gNjAwKSB7CiAgICAgICAgICAgICAgICBOZXdIZWlnaHQgPSA2MDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIE5ld0hlaWdodCA9IHBhcnNlSW50KE5ld0hlaWdodCwgMTApOwogICAgICAgICQoSWZyYW1lKS5oZWlnaHQoTmV3SGVpZ2h0ICsgJ3B4Jyk7CiAgICB9CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShDb3JlLkFnZW50LklUU01TZXJ2aWNlWm9vbSB8fCB7fSkpOwo=</File>
        <File Location="var/httpd/htdocs/js/Core.Agent.Admin.Service.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vICRvcmlnaW46IG90b2JvIC0gZTQ0YzE4YWVhOWFiYzEyNWZkZGY5Y2VlZWQyMDRkYjRmYWIyOTBlMCAtIHZhci9odHRwZC9odGRvY3MvanMvQ29yZS5BZ2VudC5BZG1pbi5TZXJ2aWNlLmpzCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgQ29yZSA9IENvcmUgfHwge307CkNvcmUuQWdlbnQgPSBDb3JlLkFnZW50IHx8IHt9OwpDb3JlLkFnZW50LkFkbWluID0gQ29yZS5BZ2VudC5BZG1pbiB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlIENvcmUuQWdlbnQuQWRtaW4uU2VydmljZQogKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5BZG1pbgogKiBAYXV0aG9yCiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIGZ1bmN0aW9uIGZvciBBZG1pblNlcnZpY2UgbW9kdWxlLgogKi8KIENvcmUuQWdlbnQuQWRtaW4uU2VydmljZSA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKgogICAgKiBAbmFtZSBJbml0CiAgICAqIEBtZW1iZXJvZiBDb3JlLkFnZW50LkFkbWluLlNlcnZpY2UKICAgICogQGZ1bmN0aW9uCiAgICAqIEBkZXNjcmlwdGlvbgogICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGFibGUgZmlsdGVyLgogICAgKi8KICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgQ29yZS5VSS5UYWJsZS5Jbml0VGFibGVGaWx0ZXIoJCgnI0ZpbHRlclNlcnZpY2VzJyksICQoJyNTZXJ2aWNlcycpKTsKCiAgICAgICAgLy8gaW5pdCBjaGVja2JveCB0byBpbmNsdWRlIGludmFsaWQgZWxlbWVudHMKICAgICAgICAkKCdpbnB1dCNJbmNsdWRlSW52YWxpZCcpLm9mZignY2hhbmdlJykub24oJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIFVSTCA9IENvcmUuQ29uZmlnLkdldCgiQmFzZWxpbmsiKSArICdBY3Rpb249JyArIENvcmUuQ29uZmlnLkdldCgiQWN0aW9uIikgKyAnO0luY2x1ZGVJbnZhbGlkPScgKyAoICQodGhpcykuaXMoJzpjaGVja2VkJykgPyAxIDogMCApOwogICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFVSTDsKICAgICAgICB9KTsKCi8vIFNlcnZpY2UgQ2F0YWxvZwogICAgICAgIC8vIGJpbmQgY2xpY2sgZnVuY3Rpb24gdG8gYWRkIGJ1dHRvbgogICAgICAgICQoJy5MYW5ndWFnZUFkZCcpLm9mZignY2hhbmdlLlNlcnZpY2UnKS5vbignY2hhbmdlLlNlcnZpY2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIFRhcmdldE5TLkFkZExhbmd1YWdlKCQodGhpcykudmFsKCksICQoJy5MYW5ndWFnZUFkZCBvcHRpb246c2VsZWN0ZWQnKS50ZXh0KCkpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgIC8vIGJpbmQgY2xpY2sgZnVuY3Rpb24gdG8gcmVtb3ZlIGJ1dHRvbgogICAgICAgICQoJy5MYW5ndWFnZVJlbW92ZScpLm9mZignY2xpY2suU2VydmljZScpLm9uKCdjbGljay5TZXJ2aWNlJywgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgaWYgKHdpbmRvdy5jb25maXJtKENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgc2VydmljZSBkZXNjcmlwdGlvbiBsYW5ndWFnZT8nKSkpIHsKICAgICAgICAgICAgICAgIFRhcmdldE5TLlJlbW92ZUxhbmd1YWdlKCQodGhpcykpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKLy8gRU8gU2VydmljZSBDYXRhbG9nCiAgICB9OwoKICAgIAovLyBTZXJ2aWNlIENhdGFsb2cKICAgLyoqCiAgICAgKiBAbmFtZSBBZGRMYW5ndWFnZQogICAgICogQG1lbWJlcm9mIENvcmUuQWdlbnQuQWRtaW4uU2VydmljZQogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gTGFuZ3VhZ2VJRCAtIHNob3J0IG5hbWUgb2YgdGhlIGxhbmd1YWdlIGxpa2UgZXNfTVguCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gTGFuZ3VhZ2UgLSBmdWxsIG5hbWUgb2YgdGhlIGxhbmd1YWdlIGxpa2UgU3BhbmlzaCAoTWV4aWNvKS4KICAgICAqIEByZXR1cm5zIHtCb29sfSBSZXR1cm5zIGZhbHNlIHRvIHByZXZlbnQgZXZlbnQgYnViYmxpbmcuCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBhZGQgYSBuZXcgc2VydmljZSBkZXNjcmlwdGlvbiBsYW5ndWFnZS4KICAgICAqLwogICBUYXJnZXROUy5BZGRMYW5ndWFnZSA9IGZ1bmN0aW9uKExhbmd1YWdlSUQsIExhbmd1YWdlKXsKCiAgICAgICAgdmFyICRDbG9uZSA9ICQoJy5UZW1wbGF0ZScpLmNsb25lKCk7CgogICAgICAgIGlmIChMYW5ndWFnZSA9PT0gJy0nKXsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgLy8gcmVtb3ZlIHVubmVjZXNzYXJ5IGNsYXNzZXMKICAgICAgICAkQ2xvbmUucmVtb3ZlQ2xhc3MoJ0hpZGRlbiBUZW1wbGF0ZScpOwoKICAgICAgICAvLyBhZGQgdGl0bGUKICAgICAgICAkQ2xvbmUuZmluZCgnLlRpdGxlJykuaHRtbChMYW5ndWFnZSk7CgogICAgICAgIC8vIHVwZGF0ZSByZW1vdmUgbGluawogICAgICAgICRDbG9uZS5maW5kKCcjVGVtcGxhdGVfTGFuZ3VhZ2VfUmVtb3ZlJykuYXR0cignbmFtZScsIExhbmd1YWdlSUQgKyAnX0xhbmd1YWdlX1JlbW92ZScpOwogICAgICAgICRDbG9uZS5maW5kKCcjVGVtcGxhdGVfTGFuZ3VhZ2VfUmVtb3ZlJykuYXR0cignaWQnLCBMYW5ndWFnZUlEICsgJ19MYW5ndWFnZV9SZW1vdmUnKTsKCiAgICAgICAgLy8gc2V0IGhpZGRlbiBsYW5ndWFnZSBmaWVsZAogICAgICAgICRDbG9uZS5maW5kKCcuTGFuZ3VhZ2VJRCcpLmF0dHIoJ25hbWUnLCAnTGFuZ3VhZ2VJRCcpOwogICAgICAgICRDbG9uZS5maW5kKCcuTGFuZ3VhZ2VJRCcpLnZhbChMYW5ndWFnZUlEKTsKCiAgICAgICAgLy8gdXBkYXRlIHN1YmplY3QgbGFiZWwKICAgICAgICAkQ2xvbmUuZmluZCgnI1RlbXBsYXRlX0xhYmVsX0Rlc2NyaXB0aW9uU2hvcnQnKS5hdHRyKCdmb3InLCBMYW5ndWFnZUlEICsgJ19EZXNjcmlwdGlvblNob3J0Jyk7CiAgICAgICAgJENsb25lLmZpbmQoJyNUZW1wbGF0ZV9MYWJlbF9EZXNjcmlwdGlvblNob3J0JykuYXR0cignaWQnLCBMYW5ndWFnZUlEICsgJ19MYWJlbF9EZXNjcmlwdGlvblNob3J0Jyk7CgogICAgICAgIC8vIHVwZGF0ZSBzdWJqZWN0IGZpZWxkCiAgICAgICAgJENsb25lLmZpbmQoJyNUZW1wbGF0ZV9EZXNjcmlwdGlvblNob3J0JykuYXR0cignbmFtZScsIExhbmd1YWdlSUQgKyAnX0Rlc2NyaXB0aW9uU2hvcnQnKTsKICAgICAgICAkQ2xvbmUuZmluZCgnI1RlbXBsYXRlX0Rlc2NyaXB0aW9uU2hvcnQnKS5hZGRDbGFzcygnVmFsaWRhdGVfUmVxdWlyZWQnKTsKICAgICAgICAkQ2xvbmUuZmluZCgnI1RlbXBsYXRlX0Rlc2NyaXB0aW9uU2hvcnQnKS5hdHRyKCdpZCcsIExhbmd1YWdlSUQgKyAnX0Rlc2NyaXB0aW9uU2hvcnQnKTsKICAgICAgICAkQ2xvbmUuZmluZCgnI1RlbXBsYXRlX0Rlc2NyaXB0aW9uU2hvcnRFcnJvcicpLmF0dHIoJ2lkJywgTGFuZ3VhZ2VJRCArICdfRGVzY3JpcHRpb25TaG9ydEVycm9yJyk7CgogICAgICAgIC8vIHVwZGF0ZSBib2R5IGxhYmVsCiAgICAgICAgJENsb25lLmZpbmQoJyNUZW1wbGF0ZV9MYWJlbF9EZXNjcmlwdGlvbkxvbmcnKS5hdHRyKCdmb3InLCBMYW5ndWFnZUlEICsgJ19EZXNjcmlwdGlvbkxvbmcnKTsKICAgICAgICAkQ2xvbmUuZmluZCgnI1RlbXBsYXRlX0xhYmVsX0Rlc2NyaXB0aW9uTG9uZycpLmF0dHIoJ2lkJywgTGFuZ3VhZ2VJRCArICdfTGFiZWxfRGVzY3JpcHRpb25Mb25nJyk7CgogICAgICAgIC8vIHVwZGF0ZSBib2R5IGZpZWxkCiAgICAgICAgJENsb25lLmZpbmQoJyNUZW1wbGF0ZV9EZXNjcmlwdGlvbkxvbmcnKS5hdHRyKCduYW1lJywgTGFuZ3VhZ2VJRCArICdfRGVzY3JpcHRpb25Mb25nJyk7CiAgICAgICAgJENsb25lLmZpbmQoJyNUZW1wbGF0ZV9EZXNjcmlwdGlvbkxvbmcnKS5hZGRDbGFzcygnUmljaFRleHQnKTsKICAgICAgICAkQ2xvbmUuZmluZCgnI1RlbXBsYXRlX0Rlc2NyaXB0aW9uTG9uZycpLmF0dHIoJ2lkJywgTGFuZ3VhZ2VJRCArICdfRGVzY3JpcHRpb25Mb25nJyk7CgogICAgICAgIC8vIGFwcGVuZCB0byBjb250YWluZXIKICAgICAgICAkKCcuU2VydmljZUxhbmd1YWdlQ29udGFpbmVyJykuYXBwZW5kKCRDbG9uZSk7CgogICAgICAgIC8vIGluaXRpYWxpemUgdGhlIHJpY2ggdGV4dCBlZGl0b3IgaWYgc2V0CiAgICAgICAgaWYgKHBhcnNlSW50KENvcmUuQ29uZmlnLkdldCgnUmljaFRleHRTZXQnKSwgMTApID09PSAxKSB7CiAgICAgICAgICAgIENvcmUuVUkuUmljaFRleHRFZGl0b3IuSW5pdEFsbEVkaXRvcnMoKTsKICAgICAgICB9CgogICAgICAgIC8vIGJpbmQgY2xpY2sgZnVuY3Rpb24gdG8gcmVtb3ZlIGJ1dHRvbgogICAgICAgICQoJy5MYW5ndWFnZVJlbW92ZScpLm9mZignY2xpY2suU2VydmljZScpLm9uKCdjbGljay5TZXJ2aWNlJywgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgaWYgKHdpbmRvdy5jb25maXJtKENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgc2VydmljZSBkZXNjcmlwdGlvbiBsYW5ndWFnZT8nKSkpIHsKICAgICAgICAgICAgICAgIFRhcmdldE5TLlJlbW92ZUxhbmd1YWdlKCQodGhpcykpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgVGFyZ2V0TlMuTGFuZ3VhZ2VTZWxlY3Rpb25SZWJ1aWxkKCk7CgogICAgICAgIENvcmUuVUkuSW5pdFdpZGdldEFjdGlvblRvZ2dsZSgpOwoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgUmVtb3ZlTGFuZ3VhZ2UKICAgICAqIEBtZW1iZXJvZiBDb3JlLkFnZW50LkFkbWluLlNlcnZpY2UKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9IE9iamVjdCAtIEpRdWVyeSBvYmplY3QgdXNlZCB0byByZW1vdmUgdGhlIGxhbmd1YWdlIGJsb2NrCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiByZW1vdmVzIGEgc2VydmljZSBkZXNjcmlwdGlvbiBsYW5ndWFnZS4KICAgICAqLwogICAgVGFyZ2V0TlMuUmVtb3ZlTGFuZ3VhZ2UgPSBmdW5jdGlvbiAoT2JqZWN0KSB7CiAgICAgICAgT2JqZWN0LmNsb3Nlc3QoJy5TZXJ2aWNlTGFuZ3VhZ2UnKS5yZW1vdmUoKTsKICAgICAgICBUYXJnZXROUy5MYW5ndWFnZVNlbGVjdGlvblJlYnVpbGQoKTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBMYW5ndWFnZVNlbGVjdGlvblJlYnVpbGQKICAgICAqIEBtZW1iZXJvZiBDb3JlLkFnZW50LkFkbWluLlNlcnZpY2UKICAgICAqIEBmdW5jdGlvbgogICAgICogQHJldHVybnMge0Jvb2xlYW59IFJldHVybnMgdHJ1ZS4KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIHJlYnVpbGRzIGxhbmd1YWdlIHNlbGVjdGlvbiwgb25seSBzaG93IGF2YWlsYWJsZSBsYW5ndWFnZXMuCiAgICAgKi8KICAgIFRhcmdldE5TLkxhbmd1YWdlU2VsZWN0aW9uUmVidWlsZCA9IGZ1bmN0aW9uICgpIHsKCiAgICAgICAgLy8gZ2V0IG9yaWdpbmFsIHNlbGVjdGlvbiB3aXRoIGFsbCBwb3NzaWJsZSBmaWVsZHMgYW5kIGNsb25lIGl0CiAgICAgICAgdmFyICRMYW5ndWFnZXMgPSAkKCcjTGFuZ3VhZ2VPcmlnIG9wdGlvbicpLmNsb25lKCk7CgogICAgICAgICQoJyNMYW5ndWFnZScpLmVtcHR5KCk7CgogICAgICAgIC8vIHN0cmlwIGFsbCBhbHJlYWR5IHVzZWQgYXR0cmlidXRlcwogICAgICAgICRMYW5ndWFnZXMuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGlmICghJCgnLlNlcnZpY2VMYW5ndWFnZUNvbnRhaW5lciBsYWJlbCMnICsgJCh0aGlzKS52YWwoKSArICdfTGFiZWxfRGVzY3JpcHRpb25TaG9ydCcpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgJCgnI0xhbmd1YWdlJykuYXBwZW5kKCQodGhpcykpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgICQoJyNMYW5ndWFnZScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJyk7CgogICAgICAgIC8vIGJpbmQgY2xpY2sgZnVuY3Rpb24gdG8gYWRkIGJ1dHRvbgogICAgICAgICQoJy5MYW5ndWFnZUFkZCcpLm9mZignY2hhbmdlLlNlcnZpY2UnKS5vbignY2hhbmdlLlNlcnZpY2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIFRhcmdldE5TLkFkZExhbmd1YWdlKCQodGhpcykudmFsKCksICQoJy5MYW5ndWFnZUFkZCBvcHRpb246c2VsZWN0ZWQnKS50ZXh0KCkpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfTsgICAgCi8vIEVPIFNlcnZpY2UgQ2F0YWxvZwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oQ29yZS5BZ2VudC5BZG1pbi5TZXJ2aWNlIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/Core.Agent.Admin.ServiceImportExport.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBabnVueSBHbWJILCBodHRwOi8vem51bnkuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgQ29yZSAgICAgICAgID0gQ29yZSAgICAgICAgICAgICB8fCB7fTsKQ29yZS5BZ2VudCAgICAgICA9IENvcmUuQWdlbnQgICAgICAgfHwge307CkNvcmUuQWdlbnQuQWRtaW4gPSBDb3JlLkFnZW50LkFkbWluIHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgQ29yZS5BZ2VudC5BZG1pbi5TZXJ2aWNlSW1wb3J0RXhwb3J0CiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZSBTZXJ2aWNlIEltcG9ydEV4cG9ydCBtb2R1bGUuCiAqLwpDb3JlLkFnZW50LkFkbWluLlNlcnZpY2VJbXBvcnRFeHBvcnQgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKCiAgICAgICAgJC5lYWNoKFsnU2VydmljZXMnXSwgZnVuY3Rpb24gKF9JbmRleCwgRWxlbWVudHMpIHsKCiAgICAgICAgICAgICQoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il1bbmFtZT0iU2VsZWN0QWxsJytFbGVtZW50cysnIl0nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICBDb3JlLkZvcm0uU2VsZWN0QWxsQ2hlY2tib3hlcygkKHRoaXMpLCAkKCdbbmFtZT0iJytFbGVtZW50cysnIl0nKSk7CgogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKCiAgICB9OwoKICAgIHJldHVybiBUYXJnZXROUzsKCn0oQ29yZS5BZ2VudC5BZG1pbi5TZXJ2aWNlSW1wb3J0RXhwb3J0IHx8IHt9KSk7CgpDb3JlLkFnZW50LkFkbWluLlNlcnZpY2VJbXBvcnRFeHBvcnQuSW5pdCgpOwo=</File>
        <File Location="var/httpd/htdocs/js/Core.Agent.Admin.SLAImportExport.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBabnVueSBHbWJILCBodHRwOi8vem51bnkuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgQ29yZSAgICAgICAgID0gQ29yZSAgICAgICAgICAgICB8fCB7fTsKQ29yZS5BZ2VudCAgICAgICA9IENvcmUuQWdlbnQgICAgICAgfHwge307CkNvcmUuQWdlbnQuQWRtaW4gPSBDb3JlLkFnZW50LkFkbWluIHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgQ29yZS5BZ2VudC5BZG1pbi5TTEFJbXBvcnRFeHBvcnQKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIFNMQSBJbXBvcnRFeHBvcnQgbW9kdWxlLgogKi8KQ29yZS5BZ2VudC5BZG1pbi5TTEFJbXBvcnRFeHBvcnQgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKCiAgICAgICAgJC5lYWNoKFsnU0xBcyddLCBmdW5jdGlvbiAoX0luZGV4LCBFbGVtZW50cykgewoKICAgICAgICAgICAgJCgnaW5wdXRbdHlwZT0iY2hlY2tib3giXVtuYW1lPSJTZWxlY3RBbGwnK0VsZW1lbnRzKyciXScpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgICAgIENvcmUuRm9ybS5TZWxlY3RBbGxDaGVja2JveGVzKCQodGhpcyksICQoJ1tuYW1lPSInK0VsZW1lbnRzKyciXScpKTsKCiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwoKICAgIH07CgogICAgcmV0dXJuIFRhcmdldE5TOwoKfShDb3JlLkFnZW50LkFkbWluLlNMQUltcG9ydEV4cG9ydCB8fCB7fSkpOwoKQ29yZS5BZ2VudC5BZG1pbi5TTEFJbXBvcnRFeHBvcnQuSW5pdCgpOwo=</File>
        <File Location="var/packagesetup/ServiceCatalog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIHZhcjo6cGFja2FnZXNldHVwOjpTZXJ2aWNlQ2F0YWxvZzsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Ok91dHB1dDo6VGVtcGxhdGU6OlByb3ZpZGVyOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZFZhbHVlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJywKKTsKCj1oZWFkMSBOQU1FCgp2YXI6OnBhY2thZ2VzZXR1cDo6U2VydmljZUNhdGFsb2cgLSBjb2RlIHRvIGV4ZWN1dGUgZHVyaW5nIHBhY2thZ2UgaW5zdGFsbGF0aW9uCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBmdW5jdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRDb2RlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgndmFyOjpwYWNrYWdlc2V0dXA6OlN1cnZleScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIEZvcmNlIGEgcmVsb2FkIG9mIFpaWkF1dG8ucG0gYW5kIFpaWkFBdXRvLnBtIHRvIGdldCB0aGUgZnJlc2ggY29uZmlndXJhdGlvbiB2YWx1ZXMuCiAgICBmb3IgbXkgJE1vZHVsZSAoIHNvcnQga2V5cyAlSU5DICkgewogICAgICAgIGlmICggJE1vZHVsZSA9fiBtL1paWkFBP3V0b1wucG0kLyApIHsKICAgICAgICAgICAgZGVsZXRlICRJTkN7JE1vZHVsZX07CiAgICAgICAgfQogICAgfQoKICAgICMgYWx3YXlzIGRpc2NhcmQgdGhlIGNvbmZpZyBvYmplY3QgYmVmb3JlIHBhY2thZ2UgY29kZSBpcyBleGVjdXRlZCwKICAgICMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNvbmZpZyBvYmplY3Qgd2lsbCBiZSBjcmVhdGVkIG5ld2x5LCBzbyB0aGF0IGl0CiAgICAjIHdpbGwgdXNlIHRoZSByZWNlbnRseSB3cml0dGVuIG5ldyBjb25maWcgZnJvbSB0aGUgcGFja2FnZQogICAgJEtlcm5lbDo6T00tPk9iamVjdHNEaXNjYXJkKAogICAgICAgIE9iamVjdHMgPT4gWydLZXJuZWw6OkNvbmZpZyddLAogICAgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBDb2RlSW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlSW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVJbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlUmVpbnN0YWxsKCkKCnJ1biB0aGUgY29kZSByZWluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVJlaW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVSZWluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVVcGdyYWRlKCkKCnJ1biB0aGUgY29kZSB1cGdyYWRlIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl8xMV8wXzMoKQoKVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGV4ZWN1dGVkIGlmIHRoZSBpbnN0YWxsZWQgbW9kdWxlIHZlcnNpb24gaXMgc21hbGxlciB0aGFuIDExLjAuMy4KCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl8xMV8wXzMoKTsKCj1jdXQKCnN1YiBDb2RlVXBncmFkZUZyb21Mb3dlclRoYW5fMTFfMF8zIHsgICAgIyMgbm8gY3JpdGljIHF3KE9UT0JPOjpSZXF1aXJlQ2FtZWxDYXNlKQogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRMYW5ndWFnZSAgICA9ICRDb25maWdPYmplY3QtPkdldCgnRGVmYXVsdExhbmd1YWdlJykgfHwgJ2VuJzsKICAgIG15ICRDb250ZW50VHlwZSA9ICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6OlJpY2hUZXh0JykgPyAndGV4dC9odG1sJyA6ICd0ZXh0L3BsYWluJzsKCiAgICAjIHRoaXMgc2hvdWxkIG9ubHkgYmUgZXhlY3V0ZWQgaWYgd2UgY29tZSBmcm9tIDExLjAuMSBvciBhIDEwLjEgdmVyc2lvbiBiZWxvdyAxMC4xLjE1CiAgICBteSAoJFByZXZpb3VzbHlNaWdyYXRlZCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgaWQgRlJPTSBzZXJ2aWNlX2Rlc2NyaXB0aW9uJywKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMSBpZiAkUHJldmlvdXNseU1pZ3JhdGVkOwoKICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gIklOU0VSVCBJTlRPIHNlcnZpY2VfZGVzY3JpcHRpb24gKHNlcnZpY2VfaWQsIGRlc2NyaXB0aW9uX3Nob3J0LCBkZXNjcmlwdGlvbl9sb25nLCBjb250ZW50X3R5cGUsIGxhbmd1YWdlKQogICAgICAgICAgICAgICAgU0VMRUNUIGlkLCBkZXNjcmlwdGlvbl9zaG9ydCwgZGVzY3JpcHRpb25fbG9uZywgJyRDb250ZW50VHlwZScsICckTGFuZ3VhZ2UnIEZST00gc2VydmljZSBXSEVSRSBkZXNjcmlwdGlvbl9zaG9ydCA8PiAnJyBPUkRFUiBCWSBpZCBBU0MiCiAgICApOwoKICAgIGlmICgkU3VjY2VzcykgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ1NlcnZpY2UgY2F0YWxvZyBkZXNjcmlwdGlvbnMgbWlncmF0ZWQgc3VjY2Vzc2Z1bGx5IHRvIHRoZSBTZXJ2aWNlIGRlc2NyaXB0aW9uIHRhYmxlIScKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdUaGVyZSB3YXMgYSBwcm9ibGVtIG1pZ3JhdGluZyBzZXJ2aWNlIGNhdGFsb2cgZGVzY3JpcHRpb25zIGZyb20gU2VydmljZSB0YWJsZS4gUGxlYXNlIHJldmlldyBlcnJvciBsb2cuJwogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVuaW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgdW5pbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVbmluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlVW5pbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyByZW1vdmUgRHluYW1pYyBGaWVsZHMgYW5kIGl0cyB2YWx1ZXMKICAgICRTZWxmLT5fRHluYW1pY0ZpZWxkc0RlbGV0ZSgpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0R5bmFtaWNGaWVsZHNEZWxldGUoKQoKZGVsZXRlIGFsbCBleGlzdGluZyBkeW5hbWljIGZpZWxkcyBmb3IgU2VydmljZUNhdGFsb2cKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9EeW5hbWljRmllbGRzRGVsZXRlKCk7Cgo9Y3V0CgpzdWIgX0R5bmFtaWNGaWVsZHNEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnKTsKCiAgICAjIGdldCB0aGUgbGlzdCBvZiBhbGwgZHluYW1pYyBmaWVsZHMgKHZhbGlkIGFuZCBpbnZhbGlkIG9uZXMpCiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydTZXJ2aWNlJ10sCiAgICApOwoKICAgICMgZGVsZXRlIHRoZSBkeW5hbWljIGZpZWxkcwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBAeyREeW5hbWljRmllbGRMaXN0fSApIHsKCiAgICAgICAgIyBkZWxldGUgYWxsIGZpZWxkIHZhbHVlcwogICAgICAgIG15ICRWYWx1ZXNEZWxldGVTdWNjZXNzID0gJER5bmFtaWNGaWVsZFZhbHVlT2JqZWN0LT5BbGxWYWx1ZXNEZWxldGUoCiAgICAgICAgICAgIEZpZWxkSUQgPT4gJER5bmFtaWNGaWVsZC0+e0lEfSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgdmFsdWVzIGNvdWxkIGJlIGRlbGV0ZWQKICAgICAgICBpZiAoJFZhbHVlc0RlbGV0ZVN1Y2Nlc3MpIHsKCiAgICAgICAgICAgICMgZGVsZXRlIGZpZWxkCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkRGVsZXRlKAogICAgICAgICAgICAgICAgSUQgICAgID0+ICREeW5hbWljRmllbGQtPntJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgZGVsZXRlIGR5bmFtaWMgZmllbGQgJyREeW5hbWljRmllbGQtPntOYW1lfSchIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdmFsdWVzIGNvdWxkIG5vdCBiZSBkZWxldGVkCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgZGVsZXRlIHZhbHVlcyBmb3IgZHluYW1pYyBmaWVsZCAnJER5bmFtaWNGaWVsZC0+e05hbWV9JyEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Location="doc/en/ServiceCatalog.pdf" Permission="644" Encode="Base64">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</File>
    </Filelist>
    <DatabaseInstall Type="post">
        <TableCreate Type="post" Name="service_description">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="service_id" Required="true" Size="11" Type="INTEGER"></Column>
            <Column Name="description_short" Required="true" Size="191" Type="VARCHAR"></Column>
            <Column Name="description_long" Required="false" Size="3000" Type="VARCHAR"></Column>
            <Column Name="content_type" Required="true" Size="250" Type="VARCHAR"></Column>
            <Column Name="language" Required="true" Size="60" Type="VARCHAR"></Column>
            <Index Name="service_description_language">
                <IndexColumn Name="language">
                </IndexColumn>
            </Index>
            <Index Name="service_description_service_id">
                <IndexColumn Name="service_id">
                </IndexColumn>
            </Index>
        </TableCreate>
        <TableCreate Type="post" Name="service_type">
            <Column Name="service_id" Required="true" Type="INTEGER"></Column>
            <Column Name="ticket_type_id" Required="false" Type="SMALLINT"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="service">
                <Reference Foreign="id" Local="service_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="ticket_type">
                <Reference Foreign="id" Local="ticket_type_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="service_attachment">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="service_id" Required="true" Size="11" Type="INTEGER"></Column>
            <Column Name="filename" Required="false" Size="250" Type="VARCHAR"></Column>
            <Column Name="content_size" Required="false" Size="30" Type="VARCHAR"></Column>
            <Column Name="content_type" Required="false" Size="250" Type="VARCHAR"></Column>
            <Column Name="content" Required="true" Type="LONGBLOB"></Column>
            <Column Default="0" Name="inlineattachment" Required="true" Type="SMALLINT"></Column>
            <Column Name="created" Required="true" Type="DATE"></Column>
            <Column Name="created_by" Required="true" Type="INTEGER"></Column>
            <Column Name="changed" Required="true" Type="DATE"></Column>
            <Column Name="changed_by" Required="true" Type="INTEGER"></Column>
            <Index Name="service_attachment_service_id">
                <IndexColumn Name="service_id">
                </IndexColumn>
            </Index>
        </TableCreate>
        <TableAlter Type="post" Name="service">
            <ColumnAdd Name="description_short" Required="false" Size="191" Type="VARCHAR"></ColumnAdd>
            <ColumnAdd Name="description_long" Required="false" Size="3000" Type="VARCHAR"></ColumnAdd>
            <ColumnAdd Name="dest_queueid" Required="false" Size="255" Type="VARCHAR"></ColumnAdd>
            <ColumnAdd Name="keywords" Required="false" Size="255" Type="VARCHAR"></ColumnAdd>
        </TableAlter>
    </DatabaseInstall>
    <DatabaseUpgrade>
        <TableCreate Type="post" Name="service_attachment" Version="10.0.2">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="service_id" Required="true" Size="11" Type="INTEGER"></Column>
            <Column Name="filename" Required="false" Size="250" Type="VARCHAR"></Column>
            <Column Name="content_size" Required="false" Size="30" Type="VARCHAR"></Column>
            <Column Name="content_type" Required="false" Size="250" Type="VARCHAR"></Column>
            <Column Name="content" Required="true" Type="LONGBLOB"></Column>
            <Column Default="0" Name="inlineattachment" Required="true" Type="SMALLINT"></Column>
            <Column Name="created" Required="true" Type="DATE"></Column>
            <Column Name="created_by" Required="true" Type="INTEGER"></Column>
            <Column Name="changed" Required="true" Type="DATE"></Column>
            <Column Name="changed_by" Required="true" Type="INTEGER"></Column>
            <Index Name="service_attachment_service_id">
                <IndexColumn Name="service_id">
                </IndexColumn>
            </Index>
        </TableCreate>
        <TableCreate Type="post" Name="service_description" Version="11.0.3">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="service_id" Required="true" Size="11" Type="INTEGER"></Column>
            <Column Name="description_short" Required="true" Size="191" Type="VARCHAR"></Column>
            <Column Name="description_long" Required="false" Size="3000" Type="VARCHAR"></Column>
            <Column Name="content_type" Required="true" Size="250" Type="VARCHAR"></Column>
            <Column Name="language" Required="true" Size="60" Type="VARCHAR"></Column>
            <Index Name="service_description_language">
                <IndexColumn Name="language">
                </IndexColumn>
            </Index>
            <Index Name="service_description_service_id">
                <IndexColumn Name="service_id">
                </IndexColumn>
            </Index>
        </TableCreate>
        <TableAlter Type="post" Name="service" Version="10.1.11">
            <ColumnAdd Name="dest_queueid" Required="false" Size="255" Type="VARCHAR"></ColumnAdd>
        </TableAlter>
        <TableAlter Type="post" Name="service" Version="11.0.3">
            <ColumnAdd Name="keywords" Required="false" Size="255" Type="VARCHAR"></ColumnAdd>
            <ColumnChange NameNew="description_short" NameOld="description_short" Required="false" Size="191" Type="VARCHAR"></ColumnChange>
        </TableAlter>
    </DatabaseUpgrade>
    <DatabaseUninstall Type="pre">
        <TableDrop Type="pre" Name="service_type">
        </TableDrop>
        <TableDrop Type="pre" Name="service_attachment">
        </TableDrop>
        <TableDrop Type="pre" Name="service_description">
        </TableDrop>
        <TableAlter Type="pre" Name="service">
            <ColumnDrop Name="description_short"></ColumnDrop>
            <ColumnDrop Name="description_long"></ColumnDrop>
            <ColumnDrop Name="dest_queueid"></ColumnDrop>
            <ColumnDrop Name="keywords"></ColumnDrop>
        </TableAlter>
    </DatabaseUninstall>
</otrs_package>