<?xml version="1.0" encoding="utf-8" ?>
<otrs_package version="1.1">
    <Name>ServiceCatalog</Name>
    <Version>11.1.1</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-06-24 10:45:17" Version="11.1.1">Update to OTOBO 11.1.</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.1.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.1.0">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>9d0e4e515df439aa60bb800621ddc5534e1d484c</BuildCommitID>
    <BuildDate>2026-06-24 10:45:21</BuildDate>
    <BuildHost>opms.rother-oss.com</BuildHost>
    <Filelist>
        <File Location="Custom/Kernel/Modules/AdminService.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBlYTIxMTkwMjEzMGNhNWI3OTZkOTY2ODQ1OTcwY2ZjNTQ2NDQ0NTQ4IC0gS2VybmVsL01vZHVsZXMvQWRtaW5TZXJ2aWNlLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZG1pblNlcnZpY2U7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CiMgUm90aGVyIE9TUyAvIElUU01Db3JlCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKIyBFTyBJVFNNQ29yZQoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIHNldCBwcmVmIGZvciBjb2x1bW5zIGtleQogICAgJFNlbGYtPntQcmVmS2V5SW5jbHVkZUludmFsaWR9ID0gJ0luY2x1ZGVJbnZhbGlkJyAuICctJyAuICRTZWxmLT57QWN0aW9ufTsKCiAgICBteSAlUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA9ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5SW5jbHVkZUludmFsaWR9IH07CgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgIyBnZXQgZm9ybSBpZAogICAgJFNlbGYtPntGb3JtSUR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Zvcm1JRCcgKTsKCiAgICAjIGNyZWF0ZSBmb3JtIGlkCiAgICBpZiAoICEkU2VsZi0+e0Zvcm1JRH0gKSB7CiAgICAgICAgJFNlbGYtPntGb3JtSUR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUnKS0+Rm9ybUlEQ3JlYXRlKCk7CiAgICB9CgogICAgJFNlbGYtPntEeW5hbWljRmllbGRMb29rdXB9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIE9iamVjdFR5cGUgPT4gJ1NlcnZpY2UnLAogICAgKTsKIyBFTyBTZXJ2aWNlQ2F0YWxvZwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJENvbmZpZ09iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJFBhcmFtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkU2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyk7CgogICAgJFBhcmFte0luY2x1ZGVJbnZhbGlkfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdJbmNsdWRlSW52YWxpZCcgKTsKCiAgICBpZiAoIGRlZmluZWQgJFBhcmFte0luY2x1ZGVJbnZhbGlkfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgS2V5ICAgID0+ICRTZWxmLT57UHJlZktleUluY2x1ZGVJbnZhbGlkfSwKICAgICAgICAgICAgVmFsdWUgID0+ICRQYXJhbXtJbmNsdWRlSW52YWxpZH0sCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPntJbmNsdWRlSW52YWxpZH0gPSAkUGFyYW17SW5jbHVkZUludmFsaWR9OwogICAgfQoKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgIG15ICRVcGxvYWRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlJyk7CiMgRU8gU2VydmljZUNhdGFsb2cKCiMgUm90aGVyIE9TUyAvIElUU01Db3JlCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGQgZm9yIElUU01Dcml0aWNhbGl0eQogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZ0FycmF5UmVmID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+IFsgJ1RpY2tldCcgXSwKICAgICAgICBGaWVsZEZpbHRlciA9PiB7CiAgICAgICAgICAgIElUU01Dcml0aWNhbGl0eSA9PiAxLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZvciBJVFNNQ3JpdGljYWxpdHkKICAgIG15ICVQb3NzaWJsZVZhbHVlczsKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJER5bmFtaWNGaWVsZENvbmZpZ0FycmF5UmVmIH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICRQb3NzaWJsZVZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e1Bvc3NpYmxlVmFsdWVzfSB8fCB7fTsKICAgIH0KCiAgICAjIHNldCB0aGUgY3JpdGljYWxpdHkgbGlzdAogICAgJFNlbGYtPntDcml0aWNhbGl0eUxpc3R9ID0gJFBvc3NpYmxlVmFsdWVze0lUU01Dcml0aWNhbGl0eX07CiMgRU8gSVRTTUNvcmUKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHNlcnZpY2UgZWRpdAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NlcnZpY2VFZGl0JyApIHsKCiAgICAgICAgIyBoZWFkZXIKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgaHRtbCBvdXRwdXQKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5fTWFza05ldygKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzZXJ2aWNlIHNhdmUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTZXJ2aWNlU2F2ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgICMgZ2V0IHBhcmFtcwogICAgICAgIG15ICVHZXRQYXJhbTsKCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiMjIFJvdGhlciBPU1MgLyBJVFNNQ29yZQojIyAgICAgICAgZm9yIChxdyhTZXJ2aWNlSUQgUGFyZW50SUQgTmFtZSBWYWxpZElEIENvbW1lbnQpKSB7CiMgICAgICAgIGZvciAocXcoU2VydmljZUlEIFBhcmVudElEIE5hbWUgVmFsaWRJRCBDb21tZW50IFR5cGVJRCBDcml0aWNhbGl0eSkpIHsKIyMgRU8gSVRTTUNvcmUKCiAgICAgICAgQHsgJEdldFBhcmFte1RpY2tldFR5cGVJRHN9IH0gPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnVGlja2V0VHlwZUlEcycgKTsKICAgICAgICBAeyAkR2V0UGFyYW17TGFuZ3VhZ2VJRH0gfSAgICA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdMYW5ndWFnZUlEJyApOwoKICAgICAgICBmb3IgKHF3KFNlcnZpY2VJRCBQYXJlbnRJRCBOYW1lIFZhbGlkSUQgQ29tbWVudCBDcml0aWNhbGl0eSBDdXN0b21lckRlZmF1bHRTZXJ2aWNlIERlc3RRdWV1ZUlEIEtleXdvcmRzKSkgewojIEVPIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgICAgICRHZXRQYXJhbXskX30gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkXyApIHx8ICcnOwogICAgICAgIH0KCiAgICAgICAgbXkgJUVycm9yOwoKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKCiAgICAgICAgIyBnZXQgY29tcG9zZWQgY29udGVudCB0eXBlCiAgICAgICAgJEdldFBhcmFte0NvbnRlbnRUeXBlfSA9ICd0ZXh0L3BsYWluJzsKICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICAgICAkR2V0UGFyYW17Q29udGVudFR5cGV9ID0gJ3RleHQvaHRtbCc7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgc3ViamVjdCBhbmQgYm9keSBmb3IgYWxsIGxhbmd1YWdlcwogICAgICAgIGZvciBteSAkTGFuZ3VhZ2VJRCAoIEB7ICRHZXRQYXJhbXtMYW5ndWFnZUlEfSB9ICkgewoKICAgICAgICAgICAgbXkgJERlc2NyaXB0aW9uU2hvcnQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkTGFuZ3VhZ2VJRCAuICdfRGVzY3JpcHRpb25TaG9ydCcgKSB8fCAnJzsKICAgICAgICAgICAgbXkgJERlc2NyaXB0aW9uTG9uZyAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkTGFuZ3VhZ2VJRCAuICdfRGVzY3JpcHRpb25Mb25nJyApICAgIHx8ICcnOwoKICAgICAgICAgICAgJEdldFBhcmFte0Rlc2NyaXB0aW9uc30tPnskTGFuZ3VhZ2VJRH0gPSB7CiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvblNob3J0ID0+ICREZXNjcmlwdGlvblNob3J0LAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb25Mb25nICA9PiAkRGVzY3JpcHRpb25Mb25nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICA9PiAkR2V0UGFyYW17Q29udGVudFR5cGV9LAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgIyBzZXQgc2VydmVyIGVycm9yIGZsYWcgaWYgZmllbGQgaXMgZW1wdHkKICAgICAgICAgICAgaWYgKCAhJERlc2NyaXB0aW9uU2hvcnQgKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7ICRMYW5ndWFnZUlEIC4gJ19EZXNjcmlwdGlvblNob3J0U2VydmVyRXJyb3InIH0gPSAiU2VydmVyRXJyb3IiOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkIHZhbHVlcwogICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkTG9va3VwfSB9KSB7CgogICAgICAgICAgICAkR2V0UGFyYW17ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQtPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICk7CiAgICAgICAgfQojIEVPIFNlcnZpY2VDYXRhbG9nCgogICAgICAgIGlmICggISRHZXRQYXJhbXtOYW1lfSApIHsKICAgICAgICAgICAgJEVycm9yeydOYW1lSW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICB9CgogICAgICAgIG15ICRTZXJ2aWNlTmFtZSA9ICcnOwogICAgICAgIGlmICggJEdldFBhcmFte1BhcmVudElEfSApIHsKICAgICAgICAgICAgbXkgJFByZWZpeCA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlTG9va3VwKAogICAgICAgICAgICAgICAgU2VydmljZUlEID0+ICRHZXRQYXJhbXtQYXJlbnRJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJFByZWZpeCkgewogICAgICAgICAgICAgICAgJFNlcnZpY2VOYW1lID0gJFByZWZpeCAuICI6OiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJFNlcnZpY2VOYW1lIC49ICRHZXRQYXJhbXtOYW1lfTsKCiAgICAgICAgaWYgKCBsZW5ndGggJFNlcnZpY2VOYW1lID4gMjAwICkgewogICAgICAgICAgICAkRXJyb3J7J05hbWVJbnZhbGlkJ30gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkRXJyb3J7TG9uZ05hbWV9ICAgICAgPSAxOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJUVycm9yICkgewoKICAgICAgICAgICAgbXkgJExvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICAgICAgICAgICMgc2F2ZSB0byBkYXRhYmFzZQogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtTZXJ2aWNlSUR9IGVxICdORVcnICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFte1NlcnZpY2VJRH0gPSAkU2VydmljZU9iamVjdC0+U2VydmljZUFkZCgKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17U2VydmljZUlEfSApIHsKICAgICAgICAgICAgICAgICAgICAkRXJyb3J7TWVzc2FnZX0gPSAkTG9nT2JqZWN0LT5HZXRMb2dFbnRyeSgKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBXaGF0ID0+ICdNZXNzYWdlJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VydmljZU9iamVjdC0+U2VydmljZVVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICAkRXJyb3J7TWVzc2FnZX0gPSAkTG9nT2JqZWN0LT5HZXRMb2dFbnRyeSgKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBXaGF0ID0+ICdNZXNzYWdlJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgICAgICAjIHNldCBjdXN0b21lciB1c2VyIHNlcnZpY2UgbWVtYmVyCiAgICAgICAgICAgICRTZXJ2aWNlT2JqZWN0LT5DdXN0b21lclVzZXJTZXJ2aWNlTWVtYmVyQWRkKAogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VyTG9naW4gPT4gJzxERUZBVUxUPicsCiAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgICAgICAgICA9PiAkR2V0UGFyYW17U2VydmljZUlEfSwKICAgICAgICAgICAgICAgIEFjdGl2ZSAgICAgICAgICAgID0+ICRHZXRQYXJhbXtDdXN0b21lckRlZmF1bHRTZXJ2aWNlfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKIyBFTyBTZXJ2aWNlQ2F0YWxvZwoKICAgICAgICAgICAgaWYgKCAhJUVycm9yICkgewoKICAgICAgICAgICAgICAgICMgdXBkYXRlIHByZWZlcmVuY2VzCiAgICAgICAgICAgICAgICBteSAlU2VydmljZURhdGEgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUdldCgKICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJEdldFBhcmFte1NlcnZpY2VJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBteSAlUHJlZmVyZW5jZXMgPSAoKTsKICAgICAgICAgICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTZXJ2aWNlUHJlZmVyZW5jZXMnKSApIHsKICAgICAgICAgICAgICAgICAgICAlUHJlZmVyZW5jZXMgPSAleyAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NlcnZpY2VQcmVmZXJlbmNlcycpIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgbXkgJEl0ZW0gKCBzb3J0IGtleXMgJVByZWZlcmVuY2VzICkgewogICAgICAgICAgICAgICAgICAgIG15ICRNb2R1bGUgPSAkUHJlZmVyZW5jZXN7JEl0ZW19LT57TW9kdWxlfQogICAgICAgICAgICAgICAgICAgICAgICB8fCAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlNlcnZpY2VQcmVmZXJlbmNlczo6R2VuZXJpYyc7CgogICAgICAgICAgICAgICAgICAgICMgbG9hZCBtb2R1bGUKICAgICAgICAgICAgICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCRNb2R1bGUpICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbXkgJE9iamVjdCA9ICRNb2R1bGUtPm5ldygKICAgICAgICAgICAgICAgICAgICAgICAgJXskU2VsZn0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJFByZWZlcmVuY2VzeyRJdGVtfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGVidWcgICAgICA9PiAkU2VsZi0+e0RlYnVnfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIG15ICROb3RlOwogICAgICAgICAgICAgICAgICAgIG15IEBQYXJhbXMgPSAkT2JqZWN0LT5QYXJhbSggU2VydmljZURhdGEgPT4gXCVTZXJ2aWNlRGF0YSApOwogICAgICAgICAgICAgICAgICAgIGlmIChAUGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICVHZXRQYXJhbSA9ICgpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFBhcmFtSXRlbSAoQFBhcmFtcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgQEFycmF5ID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJFBhcmFtSXRlbS0+e05hbWV9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRQYXJhbUl0ZW0tPntOYW1lfSB9ID0gXEBBcnJheTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhJE9iamVjdC0+UnVuKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFBhcmFtICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VydmljZURhdGEgPT4gXCVTZXJ2aWNlRGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTm90ZSAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoIEluZm8gPT4gJE9iamVjdC0+RXJyb3IoKSApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKCiAgICAgICAgICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMKICAgICAgICAgICAgICAgIG15IEBBdHRhY2htZW50cyA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlER2V0QWxsRmlsZXNEYXRhKAogICAgICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgR2V0IGFsbCBleGlzdGluZyBhdHRhY2htZW50cy4KICAgICAgICAgICAgICAgIG15IEBFeGlzdGluZ0F0dGFjaG1lbnRzID0gJFNlcnZpY2VPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgID0+ICRHZXRQYXJhbXtTZXJ2aWNlSUR9LAogICAgICAgICAgICAgICAgICAgIFNob3dJbmxpbmUgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgZm9yIG15ICRMYW5ndWFnZUlEICggQHsgJEdldFBhcmFte0xhbmd1YWdlSUR9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgIyBMb29rdXAgb2xkIGlubGluZSBhdHRhY2htZW50cyAoaW5pdGlhbGx5IGxvYWRlZCB0byBBZG1pblNlcnZpY2UucG0gc2NyZWVuKQogICAgICAgICAgICAgICAgICAgICMgYW5kIHB1c2ggdG8gQXR0YWNobWVudHMgYXJyYXkgaWYgdGhleSBzdGlsbCBleGlzdCBpbiB0aGUgZm9ybS4KICAgICAgICAgICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQEV4aXN0aW5nQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFte0Rlc2NyaXB0aW9uc30tPnskTGFuZ3VhZ2VJRH0tPntEZXNjcmlwdGlvbkxvbmd9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9fiBteyBBY3Rpb249QWdlbnRJVFNNU2VydmljZVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtTZXJ2aWNlSUQ9JEdldFBhcmFte1NlcnZpY2VJRH07RmlsZUlEPSRBdHRhY2htZW50LT57RmlsZUlEfSB9bXN4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgR2V0IHRoZSBleGlzdGluZyBpbmxpbmUgYXR0YWNobWVudCBkYXRhLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUZpbGUgPSAkU2VydmljZU9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJEdldFBhcmFte1NlcnZpY2VJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZUlEICAgID0+ICRBdHRhY2htZW50LT57RmlsZUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBBdHRhY2htZW50cywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWxle0NvbnRlbnR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICRGaWxle0NvbnRlbnRUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZXtGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZXNpemUgICAgPT4gJEZpbGV7RmlsZXNpemV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc3Bvc2l0aW9uID0+ICdpbmxpbmUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVJRCAgICAgID0+ICRBdHRhY2htZW50LT57RmlsZUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBCdWlsZCBhIGxvb2t1cCBoYXNoIG9mIHRoZSBuZXcgYXR0YWNobWVudHMuCiAgICAgICAgICAgICAgICBteSAlTmV3QXR0YWNobWVudDsKICAgICAgICAgICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAgICAgICAgICMgVGhlIGtleSBpcyB0aGUgZmlsZW5hbWUgKyBmaWxlc2l6ZSArIGNvbnRlbnQgdHlwZS4KICAgICAgICAgICAgICAgICAgICBteSAkS2V5ID0gJEF0dGFjaG1lbnQtPntGaWxlbmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudC0+e0ZpbGVzaXplfQogICAgICAgICAgICAgICAgICAgICAgICAuICRBdHRhY2htZW50LT57Q29udGVudFR5cGV9OwoKICAgICAgICAgICAgICAgICAgICAjIEFwcGVuZCBjb250ZW50IGlkIGlmIGF2YWlsYWJsZSAoZm9yIG5ldyBpbmxpbmUgaW1hZ2VzKS4KICAgICAgICAgICAgICAgICAgICBpZiAoICRBdHRhY2htZW50LT57Q29udGVudElEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEtleSAuPSAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIFN0b3JlIGFsbCBvZiB0aGUgbmV3IGF0dGFjaG1lbnQgZGF0YS4KICAgICAgICAgICAgICAgICAgICAkTmV3QXR0YWNobWVudHskS2V5fSA9ICRBdHRhY2htZW50OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhlIGV4aXN0aW5nIGF0dGFjaG1lbnRzLgogICAgICAgICAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICAgICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQEV4aXN0aW5nQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICAgICAjIFRoZSBrZXkgaXMgdGhlIGZpbGVuYW1lICsgZmlsZXNpemVyYXcgKyBjb250ZW50IHR5cGUgKG5vIGNvbnRlbnQgaWQsIGFzIGV4aXN0aW5nIGF0dGFjaG1lbnRzIGRvbid0IGhhdmUgaXQpLgogICAgICAgICAgICAgICAgICAgIG15ICRLZXkgPSAkQXR0YWNobWVudC0+e0ZpbGVuYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAuICRBdHRhY2htZW50LT57RmlsZXNpemVSYXd9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CgogICAgICAgICAgICAgICAgICAgICMgQXR0YWNobWVudCBpcyBhbHJlYWR5IGV4aXN0aW5nLCB3ZSBjYW4gZGVsZXRlIGl0IGZyb20gdGhlIG5ldyBhdHRhY2htZW50IGhhc2guCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkTmV3QXR0YWNobWVudHskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlICROZXdBdHRhY2htZW50eyRLZXl9OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBFeGlzdGluZyBhdHRhY2htZW50IGlzIG5vIGxvbmdlciBpbiBuZXcgYXR0YWNobWVudHMgaGFzaC4KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgRGVsZXRlIHRoZSBleGlzdGluZyBhdHRhY2htZW50LgogICAgICAgICAgICAgICAgICAgICAgICBteSAkRGVsZXRlU3VjY2Vzc2Z1bCA9ICRTZXJ2aWNlT2JqZWN0LT5BdHRhY2htZW50RGVsZXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VydmljZUlEID0+ICRHZXRQYXJhbXtTZXJ2aWNlSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZUlEICAgID0+ICRBdHRhY2htZW50LT57RmlsZUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISREZWxldGVTdWNjZXNzZnVsICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50cykgewogICAgICAgICAgICAgICAgICAgICMgVXBsb2FkIGF0dGFjaG1lbnRzLgogICAgICAgICAgICAgICAgICAgIG15ICRGaWxlSUQgPSAkU2VydmljZU9iamVjdC0+QXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgU2VydmljZUlEICAgPT4gJEdldFBhcmFte1NlcnZpY2VJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVOYW1lICAgID0+ICRBdHRhY2htZW50LT57RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50U2l6ZSA9PiAkQXR0YWNobWVudC0+e0ZpbGVzaXplfSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRBdHRhY2htZW50LT57Q29udGVudH0sCiAgICAgICAgICAgICAgICAgICAgICAgIElubGluZSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICEkRmlsZUlEICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBSZXdyaXRlIHRoZSBVUkxzIG9mIHRoZSBpbmxpbmUgaW1hZ2VzIGZvciB0aGUgdXBsb2FkZWQgcGljdHVyZXMuCiAgICAgICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUlubGluZUF0dGFjaG1lbnRVUkxVcGRhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gJEF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgID0+ICRHZXRQYXJhbXtTZXJ2aWNlSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBGaWxlSUQgICAgID0+ICRGaWxlSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgdXBkYXRlIHRoZSBpbmxpbmUgaW1hZ2UgVVJMcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiZm9yIFNlcnZpY2VJRCAnJEdldFBhcmFte1NlcnZpY2VJRH0nISIsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEUmVtb3ZlKCBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9ICk7CgogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZExvb2t1cH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVTZXQgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJEdldFBhcmFte1NlcnZpY2VJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkR2V0UGFyYW17ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQtPntOYW1lfSB9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggISRWYWx1ZVNldCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVbmFibGUgdG8gc2V0IHZhbHVlIGZvciBkeW5hbWljIGZpZWxkICVzIScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgQ3JlYXRlIEFjbCBpZiBjb25maWcgaXMgZW5hYmxlZAogICAgICAgICAgICAgICAgIyBXZSBjcmVhdGUgb25lIEFjbCBwZXIgVGlja2V0LVR5cGUKICAgICAgICAgICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNscycpICkgewogICAgICAgICAgICAgICAgICAgIGZvciBteSAkVGlja2V0VHlwZSAoIEB7ICRHZXRQYXJhbXtUaWNrZXRUeXBlSURzfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRTZXJ2aWNlT2JqZWN0LT5VcGRhdGVUeXBTZXJ2aWNlQUNMKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0VHlwZUlEID0+ICRUaWNrZXRUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VydmljZUlEICAgID0+ICRHZXRQYXJhbXtTZXJ2aWNlSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VydmljZVZhbGlkID0+ICRHZXRQYXJhbXtWYWxpZElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KIyBFTyBTZXJ2aWNlQ2F0YWxvZwoKICAgICAgICAgICAgICAgICMgaWYgdGhlIHVzZXIgd291bGQgbGlrZSB0byBjb250aW51ZSBlZGl0aW5nIHRoZSBzZXJ2aWNlLCBqdXN0IHJlZGlyZWN0IHRvIHRoZSBlZGl0IHNjcmVlbgogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbnRpbnVlQWZ0ZXJTYXZlJyApCiAgICAgICAgICAgICAgICAgICAgJiYgKCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29udGludWVBZnRlclNhdmUnICkgZXEgJzEnICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbXkgJElEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlcnZpY2VJRCcgKSB8fCAnJzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICAgICAgICAgIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259O1N1YmFjdGlvbj1TZXJ2aWNlRWRpdDtTZXJ2aWNlSUQ9JElEIgogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgIyBvdGhlcndpc2UgcmV0dXJuIHRvIG92ZXJ2aWV3CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSIgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBzb21ldGhpbmcgd2VudCB3cm9uZwogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRFcnJvcntNZXNzYWdlfQogICAgICAgICAgICA/ICRMYXlvdXRPYmplY3QtPk5vdGlmeSgKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICBJbmZvICAgICA9PiAkRXJyb3J7TWVzc2FnZX0sCiAgICAgICAgICAgICkKICAgICAgICAgICAgOiAnJzsKCiAgICAgICAgIyBodG1sIG91dHB1dAogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9NYXNrTmV3KAogICAgICAgICAgICAlRXJyb3IsCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKICAgICAgICByZXR1cm4gJE91dHB1dDsKCiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzZXJ2aWNlIG92ZXJ2aWV3CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNlIHsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGVyCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGNoZWNrIGlmIHNlcnZpY2UgaXMgZW5hYmxlZCB0byB1c2UgaXQgaGVyZQogICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlJykgKSB7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ0Vycm9yJywKICAgICAgICAgICAgICAgIERhdGEgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggIlBsZWFzZSBhY3RpdmF0ZSAlcyBmaXJzdCEiLCAiU2VydmljZSIgKSwKICAgICAgICAgICAgICAgIExpbmsgICAgID0+CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfQogICAgICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj1BZG1pblN5c3RlbUNvbmZpZ3VyYXRpb247U3ViYWN0aW9uPVZpZXc7U2V0dGluZz1UaWNrZXQlM0ElM0FTZXJ2aWNlOycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIG91dHB1dCBvdmVydmlldwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlldycsCiAgICAgICAgICAgIERhdGEgPT4geyAlUGFyYW0sIH0sCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ0FjdGlvbkxpc3QnICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ0FjdGlvbkFkZCcgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSW5jbHVkZUludmFsaWQnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEluY2x1ZGVJbnZhbGlkICAgICAgICA9PiAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSwKICAgICAgICAgICAgICAgIEluY2x1ZGVJbnZhbGlkQ2hlY2tlZCA9PiAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA/ICdjaGVja2VkJyA6ICcnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ0ZpbHRlcicgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnSW1wb3J0RXhwb3J0V2lkZ2V0JyApOwoKICAgICAgICAjIG91dHB1dCBvdmVydmlldyByZXN1bHQKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdMaXN0JywKICAgICAgICAgICAgRGF0YSA9PiB7ICVQYXJhbSwgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzZXJ2aWNlIGxpc3QKICAgICAgICBteSAkU2VydmljZUxpc3QgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUxpc3RHZXQoCiAgICAgICAgICAgIFZhbGlkICA9PiAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA/IDAgOiAxLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgaWYgdGhlcmUgYXJlIGFueSBzZXJ2aWNlcyBkZWZpbmVkLCB0aGV5IGFyZSBzaG93bgogICAgICAgIGlmICggQHskU2VydmljZUxpc3R9ICkgewoKICAgICAgICAgICAgIyBnZXQgdmFsaWQgbGlzdAogICAgICAgICAgICBteSAlVmFsaWRMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgpOwoKICAgICAgICAgICAgIyBzb3J0IHRoZSBzZXJ2aWNlIGxpc3QgYnkgbG9uZyBzZXJ2aWNlIG5hbWUKICAgICAgICAgICAgQHskU2VydmljZUxpc3R9ID0gc29ydCB7ICRhLT57TmFtZX0gLiAnOjonIGNtcCAkYi0+e05hbWV9IC4gJzo6JyB9IEB7JFNlcnZpY2VMaXN0fTsKCiAgICAgICAgICAgIGZvciBteSAkU2VydmljZURhdGEgKCBAeyRTZXJ2aWNlTGlzdH0gKSB7CgogICAgICAgICAgICAgICAgIyBvdXRwdXQgcm93CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld0xpc3RSb3cnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAleyRTZXJ2aWNlRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkID0+ICRWYWxpZExpc3R7ICRTZXJ2aWNlRGF0YS0+e1ZhbGlkSUR9IH0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAjIG90aGVyd2lzZSBhIG5vIGRhdGEgZm91bmQgbXNnIGlzIGRpc3BsYXllZAogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluU2VydmljZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBfTWFza05ldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKTsKICAgIG15ICVTZXJ2aWNlRGF0YTsKCiAgICAjIGdldCBwYXJhbXMKICAgICRTZXJ2aWNlRGF0YXtTZXJ2aWNlSUR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gIlNlcnZpY2VJRCIgKTsKICAgIGlmICggJFNlcnZpY2VEYXRhe1NlcnZpY2VJRH0gbmUgJ05FVycgKSB7CiAgICAgICAgJVNlcnZpY2VEYXRhID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VHZXQoCiAgICAgICAgICAgIFNlcnZpY2VJRCA9PiAkU2VydmljZURhdGF7U2VydmljZUlEfSwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgICAgICAkUGFyYW17RGVzY3JpcHRpb25zfSA9ICRTZXJ2aWNlRGF0YXtEZXNjcmlwdGlvbnN9OwojIEVPIFNlcnZpY2VDYXRhbG9nCiAgICB9CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAkUGFyYW17Rm9ybUlEfSA9ICRTZWxmLT57Rm9ybUlEfTsKCiAgICBteSAkSFRNTFV0aWxzT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpOwojIEVPIFNlcnZpY2VDYXRhbG9nCgogICAgIyBvdXRwdXQgb3ZlcnZpZXcKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgU2VydmljZUlEICAgPT4gJFNlcnZpY2VEYXRhe1NlcnZpY2VJRH0sCiAgICAgICAgICAgIFNlcnZpY2VOYW1lID0+ICRTZXJ2aWNlRGF0YXtOYW1lfSwKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgIH0sCiAgICApOwoKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgICMgb3V0cHV0IHNlcnZpY2Ugb3B0aW9uIHJlZmVyZW5jZQogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnU2VydmljZVJlZmVyZW5jZScsCiAgICApOwojIEVPIFNlcnZpY2VDYXRhbG9nCgogICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ0FjdGlvbkxpc3QnICk7CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnQWN0aW9uT3ZlcnZpZXcnICk7CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgbGlzdCB0eXBlCiAgICBteSAkTGlzdFR5cGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJyk7CgogICAgIyBnZW5lcmF0ZSBQYXJlbnRPcHRpb25TdHJnCiAgICBteSAkS2VlcENoaWxkcmVuID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2U6OktlZXBDaGlsZHJlbicpIC8vIDA7CiAgICBteSAlU2VydmljZUxpc3QgID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VMaXN0KAogICAgICAgIFZhbGlkICAgICAgICA9PiAhJEtlZXBDaGlsZHJlbiwKICAgICAgICBLZWVwQ2hpbGRyZW4gPT4gJEtlZXBDaGlsZHJlbiwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgICRTZXJ2aWNlRGF0YXtQYXJlbnRPcHRpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICAgID0+IFwlU2VydmljZUxpc3QsCiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1BhcmVudElEJywKICAgICAgICBTZWxlY3RlZElEICAgICA9PiAkUGFyYW17UGFyZW50SUR9IHx8ICRTZXJ2aWNlRGF0YXtQYXJlbnRJRH0sCiAgICAgICAgUG9zc2libGVOb25lICAgPT4gMSwKICAgICAgICBUcmVlVmlldyAgICAgICA9PiAoICRMaXN0VHlwZSBlcSAndHJlZScgKSA/IDEgOiAwLAogICAgICAgIERpc2FibGVkQnJhbmNoID0+ICRTZXJ2aWNlRGF0YXtOYW1lfSwKICAgICAgICBUcmFuc2xhdGlvbiAgICA9PiAwLAogICAgICAgIENsYXNzICAgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiMjIFJvdGhlciBPU1MgLyBJVFNNQ29yZQojICAgICMgZ2VuZXJhdGUgVHlwZU9wdGlvblN0cmcKIyAgICBteSAkVHlwZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiMgICAgICAgIENsYXNzID0+ICdJVFNNOjpTZXJ2aWNlOjpUeXBlJywKIyAgICApOwojCiMgICAgIyBidWlsZCB0aGUgdHlwZSBkcm9wZG93bgojICAgICRTZXJ2aWNlRGF0YXtUeXBlT3B0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKIyAgICAgICAgRGF0YSAgICAgICA9PiAkVHlwZUxpc3QsCiMgICAgICAgIE5hbWUgICAgICAgPT4gJ1R5cGVJRCcsCiMgICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1R5cGVJRH0gfHwgJFNlcnZpY2VEYXRhe1R5cGVJRH0sCiMgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiMgICAgKTsKCiAgICBteSAlVGlja2V0VHlwZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpLT5UeXBlTGlzdCgKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIEJ1aWxkIHRpY2tldCB0eXBlIHNlbGVjdGlvbi4KICAgICRTZXJ2aWNlRGF0YXtUaWNrZXRUeXBlT3B0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVUaWNrZXRUeXBlTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ1RpY2tldFR5cGVJRHMnLAogICAgICAgIE11bHRpcGxlICAgICA9PiAxLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17VGlja2V0VHlwZUlEc30gfHwgJFNlcnZpY2VEYXRhe1RpY2tldFR5cGVJRHN9LAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBNb3ZlIFRpY2tldCB0byBxdWV1ZQogICAgbXkgJVRpY2tldFF1ZXVlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpLT5HZXRBbGxRdWV1ZXMoCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7CgogICAgIyBCdWlsZCB0aWNrZXQgcXVldWUgc2VsZWN0aW9uLgogICAgJFNlcnZpY2VEYXRhe1RpY2tldFF1ZXVlT3B0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVUaWNrZXRRdWV1ZUxpc3QsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdEZXN0UXVldWVJRCcsCiAgICAgICAgTXVsdGlwbGUgICAgID0+IDAsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgVHJlZVZpZXcgICAgICAgPT4gKCAkTGlzdFR5cGUgZXEgJ3RyZWUnICkgPyAxIDogMCwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0Rlc3RRdWV1ZUlEfSB8fCAkU2VydmljZURhdGF7RGVzdFF1ZXVlSUR9LAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgbXkgJURlZmF1bHRTZXJ2aWNlcyA9ICRTZXJ2aWNlT2JqZWN0LT5DdXN0b21lclVzZXJTZXJ2aWNlTWVtYmVyTGlzdCgKICAgICAgICBDdXN0b21lclVzZXJMb2dpbiA9PiAnPERFRkFVTFQ+JywKICAgICAgICBSZXN1bHQgICAgICAgICAgICA9PiAnSEFTSCcsCiAgICAgICAgRGVmYXVsdFNlcnZpY2VzICAgPT4gMSwKICAgICk7CgogICAgJFNlcnZpY2VEYXRhe0N1c3RvbWVyU2VydmljZUNoZWNrZWR9ID0gJyc7CgogICAgREVGQVVMVFNFUlZJQ0U6CiAgICBmb3IgbXkgJERlZlNlcnZpY2UgKCBrZXlzICVEZWZhdWx0U2VydmljZXMgKSB7CgogICAgICAgIGlmICggJFNlcnZpY2VEYXRhe1NlcnZpY2VJRH0gZXEgJERlZlNlcnZpY2UgKSB7CiAgICAgICAgICAgICRTZXJ2aWNlRGF0YXtDdXN0b21lclNlcnZpY2VDaGVja2VkfSA9ICdjaGVja2VkJzsKICAgICAgICAgICAgbGFzdCBERUZBVUxUU0VSVklDRTsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgcmljaCB0ZXh0IGVkaXRvcgogICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKCiAgICAgICAgIyBzZXQgdXAgcmljaCB0ZXh0IGVkaXRvcgogICAgICAgICRMYXlvdXRPYmplY3QtPlNldFJpY2hUZXh0UGFyYW1ldGVycygKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CiMgRU8gU2VydmljZUNhdGFsb2cKCiAgICAjIGJ1aWxkIHRoZSBjcml0aWNhbGl0eSBkcm9wZG93bgogICAgJFNlcnZpY2VEYXRhe0NyaXRpY2FsaXR5T3B0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+ICRTZWxmLT57Q3JpdGljYWxpdHlMaXN0fSwKICAgICAgICBOYW1lICAgICAgID0+ICdDcml0aWNhbGl0eScsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17Q3JpdGljYWxpdHl9IHx8ICRTZXJ2aWNlRGF0YXtDcml0aWNhbGl0eX0sCiAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CiMgRU8gSVRTTUNvcmUKCiAgICAjIGdldCB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExpc3QoKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgICRTZXJ2aWNlRGF0YXtWYWxpZE9wdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJVZhbGlkTGlzdCwKICAgICAgICBOYW1lICAgICAgID0+ICdWYWxpZElEJywKICAgICAgICBTZWxlY3RlZElEID0+ICRTZXJ2aWNlRGF0YXtWYWxpZElEfSB8fCAkVmFsaWRMaXN0UmV2ZXJzZXt2YWxpZH0sCiAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBvdXRwdXQgc2VydmljZSBlZGl0CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTZXJ2aWNlRWRpdCcsCiAgICAgICAgRGF0YSA9PiB7ICVQYXJhbSwgJVNlcnZpY2VEYXRhLCB9LAogICAgKTsKCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAjIEdldCBkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0LgogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkUGFyYW1PYmplY3QgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkTG9va3VwfSB9ICkgewoKICAgICAgICBteSAkVmFsdWVHZXQgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFNlcnZpY2VEYXRhe1NlcnZpY2VJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgSFRNTCBmb3IgZHluYW1pYyBmaWVsZAogICAgICAgIG15ICREeW5hbWljRmllbGRIVE1MID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFJlbmRlcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWVHZXQsCiAgICAgICAgICAgICMgTWFuZGF0b3J5ICAgICAgICAgID0+IDAsCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAoKICAgICAgICAgICAgIyBTZXJ2ZXIgZXJyb3IsIGlmIGFueQogICAgICAgICAgICAjICV7ICRQYXJhbXtFcnJvcnN9LT57ICRFbnRyeS0+WzBdIH0gfSwKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZEhUTUwpOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sCiAgICAgICAgICAgICAgICBMYWJlbCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgIEZpZWxkID0+ICREeW5hbWljRmllbGRIVE1MLT57RmllbGR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgbmFtZXMgb2YgbGFuZ3VhZ2VzIGluIEVuZ2xpc2gKICAgIG15ICVEZWZhdWx0VXNlZExhbmd1YWdlcyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnRGVmYXVsdFVzZWRMYW5ndWFnZXMnKSB8fCB7fSB9OwoKICAgICMgZ2V0IG5hdGl2ZSBuYW1lcyBvZiBsYW5ndWFnZXMKICAgIG15ICVEZWZhdWx0VXNlZExhbmd1YWdlc05hdGl2ZSA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnRGVmYXVsdFVzZWRMYW5ndWFnZXNOYXRpdmUnKSB8fCB7fSB9OwoKICAgIG15ICVMYW5ndWFnZXM7CiAgICBMQU5HVUFHRUlEOgogICAgZm9yIG15ICRMYW5ndWFnZUlEICggc29ydCBrZXlzICVEZWZhdWx0VXNlZExhbmd1YWdlcyApIHsKCiAgICAgICAgIyBuZXh0IGxhbmd1YWdlIGlmIHRoZXJlIGlzIG5vdCBzZXQgYW55IG5hbWUgZm9yIGN1cnJlbnQgbGFuZ3VhZ2UKICAgICAgICBpZiAoICEkRGVmYXVsdFVzZWRMYW5ndWFnZXN7JExhbmd1YWdlSUR9ICYmICEkRGVmYXVsdFVzZWRMYW5ndWFnZXNOYXRpdmV7JExhbmd1YWdlSUR9ICkgewogICAgICAgICAgICBuZXh0IExBTkdVQUdFSUQ7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0ZXh0cyBpbiBuYXRpdmUgYW5kIGRlZmF1bHQgbGFuZ3VhZ2UKICAgICAgICBteSAkVGV4dCAgICAgICAgPSAkRGVmYXVsdFVzZWRMYW5ndWFnZXNOYXRpdmV7JExhbmd1YWdlSUR9IHx8ICcnOwogICAgICAgIG15ICRUZXh0RW5nbGlzaCA9ICREZWZhdWx0VXNlZExhbmd1YWdlc3skTGFuZ3VhZ2VJRH0gICAgICAgfHwgJyc7CgogICAgICAgICMgdHJhbnNsYXRlIHRvIGN1cnJlbnQgdXNlcidzIGxhbmd1YWdlCiAgICAgICAgbXkgJFRleHRUcmFuc2xhdGVkID0KICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFRleHRFbmdsaXNoKTsKCiAgICAgICAgaWYgKCAkVGV4dFRyYW5zbGF0ZWQgJiYgJFRleHRUcmFuc2xhdGVkIG5lICRUZXh0ICkgewogICAgICAgICAgICAkVGV4dCAuPSAnIC0gJyAuICRUZXh0VHJhbnNsYXRlZDsKICAgICAgICB9CgogICAgICAgICMgbmV4dCBsYW5ndWFnZSBpZiB0aGVyZSBpcyBub3Qgc2V0IEVuZ2xpc2ggbm9yIG5hdGl2ZSBuYW1lIG9mIGxhbmd1YWdlLgogICAgICAgIG5leHQgTEFOR1VBR0VJRCBpZiAhJFRleHQ7CgogICAgICAgICRMYW5ndWFnZXN7JExhbmd1YWdlSUR9ID0gJFRleHQ7CiAgICB9CgogICAgIyBjb3B5IG9yaWdpbmFsIGxpc3Qgb2YgbGFuZ3VhZ2VzIHdoaWNoIHdpbGwgYmUgdXNlZCBmb3IgcmVidWlsZGluZyBsYW5ndWFnZSBzZWxlY3Rpb24KICAgIG15ICVPcmlnaW5hbERlZmF1bHRVc2VkTGFuZ3VhZ2VzID0gJUxhbmd1YWdlczsKCiAgICAjIGdldCBsYW5ndWFnZSBpZHMgZnJvbSBEZXNjcmlwdGlvbnMgcGFyYW1ldGVyLCB1c2UgRW5nbGlzaCBpZiBubyBEZXNjcmlwdGlvbnMgaXMgZ2l2ZW4KICAgICMgbWFrZSBzdXJlIEVuZ2xpc2ggaXMgdGhlIGZpcnN0IGxhbmd1YWdlCiAgICBteSBATGFuZ3VhZ2VJRHM7CiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RGVzY3JpcHRpb25zfSApICkgewogICAgICAgIGlmICggJFBhcmFte0Rlc2NyaXB0aW9uc30tPntlbn0gKSB7CiAgICAgICAgICAgIHB1c2ggQExhbmd1YWdlSURzLCAnZW4nOwogICAgICAgIH0KICAgICAgICBMQU5HVUFHRUlEOgogICAgICAgIGZvciBteSAkTGFuZ3VhZ2VJRCAoIHNvcnQga2V5cyAleyAkUGFyYW17RGVzY3JpcHRpb25zfSB9ICkgewogICAgICAgICAgICBuZXh0IExBTkdVQUdFSUQgaWYgJExhbmd1YWdlSUQgZXEgJ2VuJzsKICAgICAgICAgICAgcHVzaCBATGFuZ3VhZ2VJRHMsICRMYW5ndWFnZUlEOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJERlZmF1bHRVc2VkTGFuZ3VhZ2Vze2VufSApIHsKICAgICAgICBwdXNoIEBMYW5ndWFnZUlEcywgJ2VuJzsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHB1c2ggQExhbmd1YWdlSURzLCAoIHNvcnQga2V5cyAlRGVmYXVsdFVzZWRMYW5ndWFnZXMgKVswXTsKICAgIH0KCiAgICBmb3IgbXkgJExhbmd1YWdlSUQgKEBMYW5ndWFnZUlEcykgewogICAgICAgICMgZm9ybWF0IHRoZSBjb250ZW50IGFjY29yZGluZyB0byB0aGUgY29udGVudCB0eXBlCiAgICAgICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKCiAgICAgICAgICAgICMgbWFrZSBzdXJlIERlc2NyaXB0aW9uTG9uZyBpcyByaWNoIHRleHQgKGlmIERlc2NyaXB0aW9uTG9uZyBpcyBiYXNlZCBvbiBjb25maWcpCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRQYXJhbXtEZXNjcmlwdGlvbnN9LT57JExhbmd1YWdlSUR9LT57Q29udGVudFR5cGV9CiAgICAgICAgICAgICAgICAmJiAkUGFyYW17RGVzY3JpcHRpb25zfS0+eyRMYW5ndWFnZUlEfS0+e0NvbnRlbnRUeXBlfSA9fiBte3RleHRcL3BsYWlufXhtc2kKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJFBhcmFte0Rlc2NyaXB0aW9uc30tPnskTGFuZ3VhZ2VJRH0tPntEZXNjcmlwdGlvbkxvbmd9ID0gJEhUTUxVdGlsc09iamVjdC0+VG9IVE1MKAogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkUGFyYW17RGVzY3JpcHRpb25zfS0+eyRMYW5ndWFnZUlEfS0+e0Rlc2NyaXB0aW9uTG9uZ30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyByZWZvcm1hdCBmcm9tIEhUTUwgdG8gcGxhaW4KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJFBhcmFte0Rlc2NyaXB0aW9uc30tPnskTGFuZ3VhZ2VJRH0tPntDb250ZW50VHlwZX0KICAgICAgICAgICAgICAgICYmICRQYXJhbXtEZXNjcmlwdGlvbnN9LT57JExhbmd1YWdlSUR9LT57Q29udGVudFR5cGV9ID1+IG17dGV4dFwvaHRtbH14bXNpCiAgICAgICAgICAgICAgICAmJiAkUGFyYW17RGVzY3JpcHRpb25zfS0+eyRMYW5ndWFnZUlEfS0+e0Rlc2NyaXB0aW9uTG9uZ30KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJFBhcmFte0Rlc2NyaXB0aW9uc30tPnskTGFuZ3VhZ2VJRH0tPntEZXNjcmlwdGlvbkxvbmd9ID0gJEhUTUxVdGlsc09iamVjdC0+VG9Bc2NpaSgKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0Rlc2NyaXB0aW9uc30tPnskTGFuZ3VhZ2VJRH0tPntEZXNjcmlwdGlvbkxvbmd9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBzaG93IHRoZSBkZXNjcmlwdGlvbnMgZm9yIHRoaXMgbGFuZ3VhZ2UKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VydmljZUxhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvblNob3J0ICAgICAgICAgICAgPT4gJFBhcmFte0Rlc2NyaXB0aW9uc30tPnskTGFuZ3VhZ2VJRH0tPntEZXNjcmlwdGlvblNob3J0fSB8fCAnJywKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uTG9uZyAgICAgICAgICAgICA9PiAkUGFyYW17RGVzY3JpcHRpb25zfS0+eyRMYW5ndWFnZUlEfS0+e0Rlc2NyaXB0aW9uTG9uZ30gIHx8ICcnLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgICAgICAgICAgICAgICAgID0+ICRMYW5ndWFnZUlELAogICAgICAgICAgICAgICAgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgID0+ICRMYW5ndWFnZXN7JExhbmd1YWdlSUR9LAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb25TaG9ydFNlcnZlckVycm9yID0+ICRQYXJhbXsgJExhbmd1YWdlSUQgLiAnX0Rlc2NyaXB0aW9uU2hvcnRTZXJ2ZXJFcnJvcicgfSB8fCAnJwogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTZXJ2aWNlTGFuZ3VhZ2VSZW1vdmVCdXR0b24nLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgbGFuZ3VhZ2UgZnJvbSBkcm9wLWRvd24gbGlzdCBiZWNhdXNlIGl0IGlzIGFscmVhZHkgc2hvd24KICAgICAgICBkZWxldGUgJExhbmd1YWdlc3skTGFuZ3VhZ2VJRH07CiAgICB9CgogICAgJFBhcmFte0xhbmd1YWdlU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVMYW5ndWFnZXMsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdMYW5ndWFnZScsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUgVzUwcGMgTGFuZ3VhZ2VBZGQnLAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAxLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIEhUTUxRdW90ZSAgICA9PiAwLAogICAgKTsKCiAgICAkUGFyYW17TGFuZ3VhZ2VPcmlnU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVPcmlnaW5hbERlZmF1bHRVc2VkTGFuZ3VhZ2VzLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnTGFuZ3VhZ2VPcmlnJywKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBIVE1MUXVvdGUgICAgPT4gMCwKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTGFuZ3VhZ2VPcHRpb25zJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwojIEVPIFNlcnZpY2VDYXRhbG9nCgogICAgIyBzaG93IGVhY2ggcHJlZmVyZW5jZXMgc2V0dGluZwogICAgbXkgJVByZWZlcmVuY2VzID0gKCk7CiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnU2VydmljZVByZWZlcmVuY2VzJykgKSB7CiAgICAgICAgJVByZWZlcmVuY2VzID0gJXsgJENvbmZpZ09iamVjdC0+R2V0KCdTZXJ2aWNlUHJlZmVyZW5jZXMnKSB9OwogICAgfQogICAgZm9yIG15ICRJdGVtICggc29ydCBrZXlzICVQcmVmZXJlbmNlcyApIHsKICAgICAgICBteSAkTW9kdWxlID0gJFByZWZlcmVuY2VzeyRJdGVtfS0+e01vZHVsZX0KICAgICAgICAgICAgfHwgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpTZXJ2aWNlUHJlZmVyZW5jZXM6OkdlbmVyaWMnOwoKICAgICAgICAjIGxvYWQgbW9kdWxlCiAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgkTW9kdWxlKSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICB9CiAgICAgICAgbXkgJE9iamVjdCA9ICRNb2R1bGUtPm5ldygKICAgICAgICAgICAgJXskU2VsZn0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJFByZWZlcmVuY2VzeyRJdGVtfSwKICAgICAgICAgICAgRGVidWcgICAgICA9PiAkU2VsZi0+e0RlYnVnfSwKICAgICAgICApOwogICAgICAgIG15IEBQYXJhbXMgPSAkT2JqZWN0LT5QYXJhbSggU2VydmljZURhdGEgPT4gXCVTZXJ2aWNlRGF0YSApOwogICAgICAgIGlmIChAUGFyYW1zKSB7CiAgICAgICAgICAgIGZvciBteSAkUGFyYW1JdGVtIChAUGFyYW1zKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJdGVtJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsgJVBhcmFtLCB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICByZWYoICRQYXJhbUl0ZW0tPntEYXRhfSApIGVxICdIQVNIJwogICAgICAgICAgICAgICAgICAgIHx8IHJlZiggJFByZWZlcmVuY2VzeyRJdGVtfS0+e0RhdGF9ICkgZXEgJ0hBU0gnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICVCdWlsZFNlbGVjdGlvblBhcmFtcyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgJXsgJFByZWZlcmVuY2VzeyRJdGVtfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAleyRQYXJhbUl0ZW19LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJEJ1aWxkU2VsZWN0aW9uUGFyYW1ze0NsYXNzfSA9IGpvaW4oICcgJywgJEJ1aWxkU2VsZWN0aW9uUGFyYW1ze0NsYXNzfSAvLyAnJywgJ01vZGVybml6ZScgKTsKCiAgICAgICAgICAgICAgICAgICAgJFBhcmFtSXRlbS0+eydPcHRpb24nfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAlQnVpbGRTZWxlY3Rpb25QYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJFBhcmFtSXRlbS0+e0Jsb2NrfSB8fCAkUHJlZmVyZW5jZXN7JEl0ZW19LT57QmxvY2t9IHx8ICdPcHRpb24nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAleyAkUHJlZmVyZW5jZXN7JEl0ZW19IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JFBhcmFtSXRlbX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pblNlcnZpY2UnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtCiAgICApOwp9CgoxOwo=</File>
        <File Location="Custom/Kernel/Modules/AgentITSMServiceZoom.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSAgLSBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01TZXJ2aWNlWm9vbS5wbQojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2Mzk3ZjM2ZmYwOWQwODVlNGMzMWQ1ZGRhNDExMGE3MzMxOWY5MDZkIC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pblNlcnZpY2UudHQKIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXciKSAlXQo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckZpcnN0Ij4KICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIE1hbmFnZW1lbnQiKSB8IGh0bWwgJV08L2gxPgoKICAgIFslIEJyZWFkY3J1bWJQYXRoID0gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+IFRyYW5zbGF0ZSgnU2VydmljZSBNYW5hZ2VtZW50JyksCiAgICAgICAgICAgICAgICBMaW5rID0+IEVudigiQWN0aW9uIiksCiAgICAgICAgICAgIH0sCiAgICAgICAgXQogICAgJV0KCiAgICBbJSBJRiBEYXRhLlNlcnZpY2VJRCA9PSAiTkVXIiAgJV0KICAgICAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsgTmFtZSA9PiBUcmFuc2xhdGUoIkFkZCBTZXJ2aWNlIiksfSkgJV0KICAgIFslIEVMU0lGIERhdGEuU2VydmljZUlEICVdCiAgICAgICAgWyUgVVNFIEVkaXRUaXRsZSA9IFN0cmluZyhUcmFuc2xhdGUoIkVkaXQgU2VydmljZSIpKSAlXQogICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IEVkaXRUaXRsZS5hcHBlbmQoICc6ICcsIERhdGEuU2VydmljZU5hbWUgKSB9KSAlXQogICAgWyUgRU5EICVdCgogICAgWyUgSU5DTFVERSAiQnJlYWRjcnVtYi50dCIgUGF0aCA9IEJyZWFkY3J1bWJQYXRoICVdCgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkluY2x1ZGVJbnZhbGlkIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRmlsdGVyIGJ5IHZhbGlkIHN0YXRlIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iSW5jbHVkZUludmFsaWQiIG5hbWU9IkluY2x1ZGVJbnZhbGlkIiB2YWx1ZT0iMSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiSW5jbHVkZSBpbnZhbGlkIHNlcnZpY2VzIikgfCBodG1sICVdIiBbJSBEYXRhLkluY2x1ZGVJbnZhbGlkQ2hlY2tlZCB8IGh0bWwgJV0vPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iSW5jbHVkZUludmFsaWQiPlslIFRyYW5zbGF0ZSgiSW5jbHVkZSBpbnZhbGlkIHNlcnZpY2VzIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbmNsdWRlSW52YWxpZCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uTGlzdCIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uT3ZlcnZpZXciKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT5bJSBUcmFuc2xhdGUoIkdvIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uT3ZlcnZpZXciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBY3Rpb25BZGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlcnZpY2VFZGl0O1NlcnZpY2VJRD1ORVciIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXBsdXMtc3F1YXJlIj48L2k+WyUgVHJhbnNsYXRlKCJBZGQgU2VydmljZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkFjdGlvbkFkZCIpICVdCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkFjdGlvbkxpc3QiKSAlXQogICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRmlsdGVyIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPjxsYWJlbCBmb3I9IkZpbHRlclNlcnZpY2VzIj5bJSBUcmFuc2xhdGUoIkZpbHRlciBmb3IgU2VydmljZXMiKSB8IGh0bWwgJV08L2xhYmVsPjwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iRmlsdGVyU2VydmljZXMiIGNsYXNzPSJGaWx0ZXJCb3giIHBsYWNlaG9sZGVyPSJbJSBUcmFuc2xhdGUoIkp1c3Qgc3RhcnQgdHlwaW5nIHRvIGZpbHRlci4uLiIpIHwgaHRtbCAlXSIgbmFtZT0iRmlsdGVyU2VydmljZXMiIHZhbHVlPSIiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZpbHRlciBmb3Igc2VydmljZXMiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZpbHRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkltcG9ydEV4cG9ydFdpZGdldCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0nV2lkZ2V0U2ltcGxlJyBpZD0nU2VydmljZUltcG9ydEV4cG9ydFdpZGdldCc+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9J0hlYWRlcic+CiAgICAgICAgICAgICAgICA8aDEgY2xhc3M9IkludmlzaWJsZVRleHQiPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSW1wb3J0IC8gRXhwb3J0IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2gxPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoID0gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGUoJ0ltcG9ydCAvIEV4cG9ydCcpLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICVdCgogICAgICAgICAgICBbJSBJTkNMVURFICJCcmVhZGNydW1iLnR0IiBQYXRoID0gQnJlYWRjcnVtYlBhdGggJV0KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NvbnRlbnQnPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9J0ZpZWxkRXhwbGFuYXRpb24nPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgnSGVyZSB5b3UgY2FuIHVwbG9hZCBhIGNvbmZpZ3VyYXRpb24gZmlsZSB0byBpbXBvcnQgc2VydmljZXMgdG8geW91ciBzeXN0ZW0uIFRoZSBmaWxlIG5lZWRzIHRvIGJlIGluIC55bWwgZm9ybWF0IGFzIGV4cG9ydGVkIGJ5IHRoZSBzZXJ2aWNlIG1hbmFnZW1lbnQgbW9kdWxlLicpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSdBY3Rpb25MaXN0IFNwYWNpbmdUb3AnPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSdbJSBFbnYoIkNHSUhhbmRsZSIpICVdJyBtZXRob2Q9J3Bvc3QnIGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRhdGEnIGNsYXNzPSdWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J0NoYWxsZW5nZVRva2VuJyB2YWx1ZT1bJSBFbnYoIlVzZXJDaGFsbGVuZ2VUb2tlbiIpIHwgSlNPTiAlXT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J0FjdGlvbicgdmFsdWU9J0FkbWluU2VydmljZUltcG9ydEV4cG9ydCcvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nU3ViYWN0aW9uJyB2YWx1ZT0nSW1wb3J0Jy8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0nRmlsZVVwbG9hZCcgaWQ9J0ZpbGVVcGxvYWQnIHR5cGU9J2ZpbGUnIHNpemU9JzE4JyBjbGFzcz0nRml4ZWQgVzEwMHBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuRmlsZVVwbG9hZEludmFsaWQgfCBodG1sICVdJy8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSdGaWxlVXBsb2FkRXJyb3InIGNsYXNzPSdUb29sdGlwRXJyb3JNZXNzYWdlJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLicpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0nRmlsZVVwbG9hZFNlcnZlckVycm9yJyBjbGFzcz0nVG9vbHRpcEVycm9yTWVzc2FnZSc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgVHJhbnNsYXRlKCdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLicpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSdTcGFjaW5nVG9wJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0nY2hlY2tib3gnIGlkPSdPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzRXhhbXBsZScgbmFtZT0nT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllcycgdmFsdWU9JzEnLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSdPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzRXhhbXBsZSc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgnT3ZlcndyaXRlIGV4aXN0aW5nIGVudGl0aWVzJykgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSdDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciBTcGFjaW5nVG9wJyBpZD0nU2VydmljZUltcG9ydCcgdHlwZT0nc3VibWl0Jz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0nZmEgZmEtdXBsb2FkJz48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgnU2VydmljZXMgSW1wb3J0JykgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0nWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluU2VydmljZUltcG9ydEV4cG9ydDtTdWJhY3Rpb249RXhwb3J0JyBpZD0nU2VydmljZUV4cG9ydCcgY2xhc3M9J0NhbGxGb3JBY3Rpb24gRnVsbHNpemUgQ2VudGVyJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPSdmYSBmYS1kb3dubG9hZCc+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgnU2VydmljZXMgRXhwb3J0JykgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbXBvcnRFeHBvcnRXaWRnZXQiKSAlXQogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiMgUm90aGVyIE9TUyAvIFNlcnZpY2UgQ2F0YWxvZwojICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld0xpc3QiKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiMgRU8gU2VydmljZSBDYXRhbG9nCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJMaXN0IikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIiBpZD0iU2VydmljZXMiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiU2VydmljZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIlZhbGlkaXR5IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNoYW5nZWQiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJOb0RhdGFGb3VuZE1zZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TGlzdFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBbJSBJRiBEYXRhLlZhbGlkSUQgIT0gMSVdY2xhc3M9IkludmFsaWQiWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHRpdGxlPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIj5bJSBEYXRhLkxldmVsU3BhY2UgfCBodG1sICVdPGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1TZXJ2aWNlRWRpdDtTZXJ2aWNlSUQ9WyUgRGF0YS5TZXJ2aWNlSUQgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IHRydW5jYXRlKDgwKSB8IGh0bWwgJV08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB0aXRsZT0iWyUgRGF0YS5Db21tZW50IHwgaHRtbCAlXSI+WyUgRGF0YS5Db21tZW50IHwgdHJ1bmNhdGUoMjApIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgVHJhbnNsYXRlKERhdGEuVmFsaWQpIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5DaGFuZ2VUaW1lIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdMaXN0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJGaWx0ZXJNZXNzYWdlIEhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNSI+WyUgVHJhbnNsYXRlKCJObyBtYXRjaGVzIGZvdW5kLiIpIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgogICAgICAgICAgICA8L2Rpdj4KIyBSb3RoZXIgT1NTIC8gU2VydmljZSBDYXRhbG9nCiAgICAgICAgPC9kaXY+CiMgRU8gU2VydmljZUNhdGFsb2cKWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TGlzdCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXJ2aWNlRWRpdCIpICVdCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiMjIGluc3RlYWQgb2YKIyMgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KIyMgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgojIyAgICAgICAgICAgICAgIDxmb3JtPgojIyB3ZSBqdXN0IHNldCB0aGUgZm9ybSBhcyB0aGUgb3V0ZXIgbW9zdCBlbGVtZW50CiMjIHRvIGluY2x1ZGUgdGhlIGxhbmd1YWdlcyBhcyBzZXBhcmF0ZSB3aWRnZXQKIwojICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KIyAgICAgICAgICAgIFslIElGIERhdGEuU2VydmljZUlEID09ICdORVcnICVdCiMgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWRkIFNlcnZpY2UiKSB8IGh0bWwgJV08L2gyPgojICAgICAgICAgICAgWyUgRUxTRSAlXQojICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkVkaXQgU2VydmljZSIpIHwgaHRtbCAlXTwvaDI+CiMgICAgICAgICAgICBbJSBFTkQgJV0KIyAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiMKIyAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiPgojICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiMgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlcnZpY2VTYXZlIi8+CiMgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlNlcnZpY2VJRCIgdmFsdWU9IlslIERhdGEuU2VydmljZUlEIHwgaHRtbCAlXSIvPgojICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLlNlcnZpY2VJRCAhPSAnTkVXJyAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ29udGludWVBZnRlclNhdmUiIGlkPSJDb250aW51ZUFmdGVyU2F2ZSIgdmFsdWU9IiIvPgojICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSJbJSBEYXRhLkZvcm1JRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZXJ2aWNlU2F2ZSIvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTZXJ2aWNlSUQiIHZhbHVlPSJbJSBEYXRhLlNlcnZpY2VJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgWyUgSUYgRGF0YS5TZXJ2aWNlSUQgIT0gJ05FVycgJV0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNvbnRpbnVlQWZ0ZXJTYXZlIiBpZD0iQ29udGludWVBZnRlclNhdmUiIHZhbHVlPSIiLz4KICAgICAgICAgICAgWyUgRU5EICVdCgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIFslIElGIERhdGEuU2VydmljZUlEID09ICdORVcnICVdCiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWRkIFNlcnZpY2UiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkVkaXQgU2VydmljZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiMgRU8gU2VydmljZUNhdGFsb2cKCiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmFtZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJTZXJ2aWNlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iTmFtZSIgdmFsdWU9IlslIERhdGEuTmFtZVNob3J0IHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuTmFtZUludmFsaWQgfCBodG1sICVdIiBtYXhsZW5ndGg9IjIwMCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSIgPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLkxvbmdOYW1lICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIiA+PHA+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIG5hbWUgbWF4aW11bSBsZW5ndGggaXMgMjAwIGNoYXJhY3RlcnMgKHdpdGggU3ViLXNlcnZpY2UpLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVMU0UgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiID48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJQYXJlbnRJRCI+WyUgVHJhbnNsYXRlKCJTdWItc2VydmljZSBvZiIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5QYXJlbnRPcHRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiMjIFJvdGhlciBPU1MgLyBJVFNNQ29yZQojICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVHlwZUlEIj5bJSBUcmFuc2xhdGUoIlR5cGUiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5UeXBlT3B0aW9uU3RyZyAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiMKIyAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNyaXRpY2FsaXR5Ij5bJSBUcmFuc2xhdGUoIkNyaXRpY2FsaXR5IikgfCBodG1sICVdOiA8L2xhYmVsPgojICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgojICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3JpdGljYWxpdHlPcHRpb25TdHJnICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KIyMgRU8gSVRTTUNvcmUKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVGlja2V0VHlwZUlEcyI+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIGRlcGVuZHMgb24gdGhlIGZvbGxvd2luZyB0aWNrZXQgdHlwZXMiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVGlja2V0VHlwZU9wdGlvblN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRlc3RRdWV1ZUlEIj5bJSBUcmFuc2xhdGUoIlRpY2tldCBkZXN0aW5hdGlvbiBxdWV1ZSIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5UaWNrZXRRdWV1ZU9wdGlvblN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQ3VzdG9tZXJEZWZhdWx0U2VydmljZSI+WyUgVHJhbnNsYXRlKCJDdXN0b21lciBkZWZhdWx0IHNlcnZpY2UiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iQ3VzdG9tZXJEZWZhdWx0U2VydmljZSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiVG9nZ2xlIGFjdGl2ZSBzdGF0ZSBmb3IgJXMiLCBEYXRhLk5hbWUpIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuU2VydmljZUlEIHwgaHRtbCAlXSIgWyUgRGF0YS5DdXN0b21lclNlcnZpY2VDaGVja2VkIHwgaHRtbCAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNyaXRpY2FsaXR5Ij5bJSBUcmFuc2xhdGUoIkNyaXRpY2FsaXR5IikgfCBodG1sICVdOiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyaXRpY2FsaXR5T3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iS2V5d29yZHMiPlslIFRyYW5zbGF0ZSgiS2V5d29yZHMiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJLZXl3b3JkcyIgaWQ9IktleXdvcmRzIiB2YWx1ZT0iWyUgRGF0YS5LZXl3b3JkcyB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgbWF4bGVuZ3RoPSIyNTAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyBSb3dfRHluYW1pY0ZpZWxkX1slIERhdGEuTmFtZSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkR5bmFtaWNGaWVsZCIpICVdCiMgRU8gU2VydmljZUNhdGFsb2cKCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlZhbGlkSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWxpZE9wdGlvblN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNvbW1lbnQiPlslIFRyYW5zbGF0ZSgiQ29tbWVudCIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkNvbW1lbnQiIGlkPSJDb21tZW50IiB2YWx1ZT0iWyUgRGF0YS5Db21tZW50IHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIiBtYXhsZW5ndGg9IjI1MCIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSXRlbSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIklucHV0S2V5IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoRGF0YS5LZXkpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGlkPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiB2YWx1ZT0iWyUgRGF0YS5TZWxlY3RlZElEIHwgaHRtbCAlXSIgY2xhc3M9IlcyNXBjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbnB1dEtleSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIklucHV0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGlkPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiB2YWx1ZT0iWyUgRGF0YS5TZWxlY3RlZElEIHwgaHRtbCAlXSIgY2xhc3M9IlcyNXBjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKERhdGEuRGVzYykgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5wdXQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUZXh0QXJlYSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBpZD0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgcm93cz0iWyUgRGF0YS5Sb3dzIHwgaHRtbCAlXSIgY29scz0iWyUgRGF0YS5Db2xzIHwgaHRtbCAlXSI+WyUgRGF0YS5TZWxlY3RlZElEIHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKERhdGEuRGVzYykgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGV4dEFyZWEiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPcHRpb24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdIFslIFRyYW5zbGF0ZShEYXRhLktleSkgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuT3B0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKERhdGEuRGVzYykgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3B0aW9uIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiVXBsb2FkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoRGF0YS5LZXkpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBpZD0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgdHlwZT0iZmlsZSIgc2l6ZT0iMzAiIGNsYXNzPSJmaXhlZCIvPjxici8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIiPlslIERhdGEuRmlsZW5hbWUgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVXBsb2FkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUGFzc3dvcmQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdIFslIFRyYW5zbGF0ZShEYXRhLktleSkgfCBodG1sICVdOiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIGNsYXNzPSJXMjVwYyIgbmFtZT0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgaWQ9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIHZhbHVlPSIiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQYXNzd29yZCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJJdGVtIikgJV0KCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRvZ2dsZSB0aGlzIHdpZGdldCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiU2VydmljZSBEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3MgPSJTZXJ2aWNlTGFuZ3VhZ2VDb250YWluZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXJ2aWNlTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTZXJ2aWNlTGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgWyUgSUYgIURhdGEuTGFuZ3VhZ2UgJV0gQ29sbGFwc2VkIFslIEVORCAlXSAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiVG9nZ2xlIHRoaXMgd2lkZ2V0IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0iVGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5MYW5ndWFnZSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5MYW5ndWFnZSkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTFNFICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iV2FybmluZyI+J1slIERhdGEuTGFuZ3VhZ2VJRCB8IGh0bWwgJV0nICZtZGFzaDsgWyUgVHJhbnNsYXRlKCJUaGlzIGxhbmd1YWdlIGlzIG5vdCBwcmVzZW50IG9yIGVuYWJsZWQgb24gdGhlIHN5c3RlbS4gVGhpcyBzZXJ2aWNlIGRlc2NyaXB0aW9uIGNvdWxkIGJlIGRlbGV0ZWQgaWYgaXQgaXMgbm90IG5lZWRlZCBhbnltb3JlLiIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXJ2aWNlTGFuZ3VhZ2VSZW1vdmVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBZGRpdGlvbmFsSW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgdmFsdWU9IlJlbW92ZSBMYW5ndWFnZSIgY2xhc3M9IlJlbW92ZUJ1dHRvbiBMYW5ndWFnZVJlbW92ZSIgaWQ9IlslIERhdGEuTGFuZ3VhZ2VJRCB8IGh0bWwgJV1fTGFuZ3VhZ2VfUmVtb3ZlIiBocmVmPSIiIG5hbWU9IkRhdGEuTGFuZ3VhZ2VJRF9MYW5ndWFnZV9SZW1vdmUiPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSBTZXJ2aWNlIERlc2NyaXB0aW9uIExhbmd1YWdlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZXJ2aWNlTGFuZ3VhZ2VSZW1vdmVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMYW5ndWFnZUlEIiBjbGFzcz0iTGFuZ3VhZ2VJRCIgdmFsdWU9IlslIERhdGEuTGFuZ3VhZ2VJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuTGFuZ3VhZ2VJRCB8IGh0bWwgJV1fRGVzY3JpcHRpb25TaG9ydCIgaWQ9IlslIERhdGEuTGFuZ3VhZ2VJRCB8IGh0bWwgJV1fTGFiZWxfRGVzY3JpcHRpb25TaG9ydCIgY2xhc3M9Ik1hbmRhdG9yeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkRlc2NyaXB0aW9uIChzaG9ydCkiKSB8IGh0bWwgJV06CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJbJSBEYXRhLkxhbmd1YWdlSUQgfCBodG1sICVdX0Rlc2NyaXB0aW9uU2hvcnQiIGlkPSJbJSBEYXRhLkxhbmd1YWdlSUQgfCBodG1sICVdX0Rlc2NyaXB0aW9uU2hvcnQiIHZhbHVlPSJbJSBEYXRhLkRlc2NyaXB0aW9uU2hvcnQgfCBodG1sICVdIiBjbGFzcz0iVzc1cGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5EZXNjcmlwdGlvblNob3J0U2VydmVyRXJyb3IgfCBodG1sICVdIiBtYXhsZW5ndGg9IjIwMCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlslIERhdGEuTGFuZ3VhZ2VJRCB8IGh0bWwgJV1fRGVzY3JpcHRpb25TaG9ydEVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5MYW5ndWFnZUlEIHwgaHRtbCAlXV9EZXNjcmlwdGlvblNob3J0U2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5MYW5ndWFnZUlEIHwgaHRtbCAlXV9EZXNjcmlwdGlvbkxvbmciIGlkPSJbJSBEYXRhLkxhbmd1YWdlSUQgfCBodG1sICVdX0xhYmVsX0Rlc2NyaXB0aW9uTG9uZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiAobG9uZykiKSB8IGh0bWwgJV06CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG5hbWU9IlslIERhdGEuTGFuZ3VhZ2VJRCB8IGh0bWwgJV1fRGVzY3JpcHRpb25Mb25nIiBpZD0iWyUgRGF0YS5MYW5ndWFnZUlEIHwgaHRtbCAlXV9EZXNjcmlwdGlvbkxvbmciIGNsYXNzPSJSaWNoVGV4dCIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRGVzY3JpcHRpb24gKGxvbmcpIikgfCBodG1sICVdIiByb3dzPSIxMCIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSB8IGh0bWwgJV0iPlslIERhdGEuRGVzY3JpcHRpb25Mb25nIHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlcnZpY2VMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhpZGRlbiBUZW1wbGF0ZSBTZXJ2aWNlTGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiVG9nZ2xlIHRoaXMgd2lkZ2V0IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0iVGl0bGUiPjwvaDI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFkZGl0aW9uYWxJbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSB2YWx1ZT0iUmVtb3ZlIExhbmd1YWdlIiBjbGFzcz0iUmVtb3ZlQnV0dG9uIExhbmd1YWdlUmVtb3ZlIiBpZD0iVGVtcGxhdGVfTGFuZ3VhZ2VfUmVtb3ZlIiBocmVmPSIiIG5hbWU9IlRlbXBsYXRlX0xhbmd1YWdlX1JlbW92ZSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIFNlcnZpY2UgRGVzY3JpcHRpb24gTGFuZ3VhZ2UiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iIiBjbGFzcz0iTGFuZ3VhZ2VJRCIgdmFsdWU9IiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVGVtcGxhdGVfRGVzY3JpcHRpb25TaG9ydCIgaWQ9IlRlbXBsYXRlX0xhYmVsX0Rlc2NyaXB0aW9uU2hvcnQiIGNsYXNzPSJNYW5kYXRvcnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiAoc2hvcnQpIikgfCBodG1sICVdOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iVGVtcGxhdGVfRGVzY3JpcHRpb25TaG9ydCIgaWQ9IlRlbXBsYXRlX0Rlc2NyaXB0aW9uU2hvcnQiIHZhbHVlPSIiIGNsYXNzPSJXNzVwYyIgbWF4bGVuZ3RoPSIyMDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJUZW1wbGF0ZV9EZXNjcmlwdGlvblNob3J0RXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlRlbXBsYXRlX0Rlc2NyaXB0aW9uTG9uZyIgaWQ9IlRlbXBsYXRlX0xhYmVsX0Rlc2NyaXB0aW9uTG9uZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiAobG9uZykiKSB8IGh0bWwgJV06CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJUZW1wbGF0ZV9EZXNjcmlwdGlvbkxvbmciIGNsYXNzPSIiIG5hbWU9IlRlbXBsYXRlX0Rlc2NyaXB0aW9uTG9uZyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRGVzY3JpcHRpb24gKGxvbmcpIikgfCBodG1sICVdIiByb3dzPSIxNSIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSB8IGh0bWwgJV0iPjwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVGVtcGxhdGVfRGVzY3JpcHRpb25Mb25nRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMYW5ndWFnZU9wdGlvbnMiKSAlXQogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTGFuZ3VhZ2UiPlslIFRyYW5zbGF0ZSgiQWRkIG5ldyBzZXJ2aWNlIGRlc2NyaXB0aW9uIGxhbmd1YWdlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFuZ3VhZ2VTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhbmd1YWdlT3JpZ1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkxhbmd1YWdlT3B0aW9ucyIpICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlNhdmUgQ2hhbmdlcyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KIyBFTyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuU2VydmljZUlEICE9ICdORVcnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0QW5kQ29udGludWUiIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFByaW1hcnkiIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIGFuZCBmaW5pc2giKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTFNFICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiMgICAgICAgICAgICAgICAgPC9mb3JtPgojICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9mb3JtPgogICAgICAgIDwvZGl2PgojIEVPIFNlcnZpY2VDYXRhbG9nClslIFJlbmRlckJsb2NrRW5kKCJTZXJ2aWNlRWRpdCIpICVdCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiMgICAgICAgIDwvZGl2PgojIEVPIFNlcnZpY2VDYXRhbG9nCgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXJ2aWNlUmVmZXJlbmNlIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCBDb2xsYXBzZWQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiVG9nZ2xlIHRoaXMgd2lkZ2V0IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiT3B0aW9uIFJlZmVyZW5jZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIllvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyIpIHwgaHRtbCAlXTo8L3A+CiAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgPGR0PlslIFRyYW5zbGF0ZSgiU2VydmljZSBkZXBlbmRzIG9uIHRoZSBmb2xsb3dpbmcgdGlja2V0IHR5cGVzIikgfCBodG1sICVdOjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoJ1dpdGhpbiB0aGUgU2VydmljZUNhdGFsb2d1ZSB0aWxlIGluIHRoZSBjdXN0b21lciBkYXNoYm9hcmQsIGl0IGlzIHBvc3NpYmxlIHRvIHNob3cgdGlja2V0IHR5cGVzIGZvciBwcmVjb25maWd1cmVkIHRpY2tldCBjcmVhdGlvbiBpbnNpZGUgdGhlIHNlcnZpY2UgZGVzY3JpcHRpb24uIEZ1cnRoZXJtb3JlLCBpdCBpcyBwb3NzaWJsZSB0byByZXN0cmljdCB0aGUgc2VydmljZXMgZm9yIG90aGVyIHNjcmVlbnMgdXNpbmcgdGhlIHRpY2tldCB0eXBlcyBzZXQgaGVyZS4gSWYgeW91IHdpc2ggdG8gZG8gdGhpcywgcGxlYXNlIGFjdGl2YXRlIHRoZSBvcHRpb25zICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNscyIgYW5kICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNsczo6T3B0aW9ucyIgaW4gdGhlIE9UT0JPIHN5c3RlbSBjb25maWd1cmF0aW9uLiBUaGUgcmVzdHJpY3Rpb24gaXMgbWFkZSB2aWEgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgQUNMcywgd2hpY2ggY2FuIGJlIHZpZXdlZCB1bmRlciAiQWRtaW4gLT4gQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTCkiLiBJZiBuZWNlc3NhcnksIHBsZWFzZSBhZGp1c3QgdGhlIG9wdGlvbiAiU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHM6Ok9wdGlvbnMiIGFjY29yZGluZyB0byB5b3VyIHJlcXVpcmVtZW50cy4nKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICA8ZHQ+WyUgVHJhbnNsYXRlKCJUaWNrZXQgZGVzdGluYXRpb24gcXVldWUiKSB8IGh0bWwgJV06PC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgnSWYgd2Ugd29yayBzZXJ2aWNlLWJhc2VkLCB3ZSBkbyBub3Qgd2FudCB0byBvZmZlciB0aGUgY3VzdG9tZXIgYSBjaG9pY2Ugb2YgcXVldWVzIGluIHRoZSBjdXN0b21lciBwb3J0YWwgd2hlbiBjcmVhdGluZyBhIHRpY2tldCwgYnV0IGRlY2lkZSBvbiB0aGUgYmFzaXMgb2YgdGhlIHNlcnZpY2UgaW50byB3aGljaCBxdWV1ZSAob3Igd2hpY2ggdGVhbSBvZiBhZ2VudHMpIHRoZSB0aWNrZXQgc2hvdWxkIGJlIHByb2Nlc3NlZCBmaXJzdC4gSW4gb3JkZXIgdG8gdXNlIHRoaXMgb3B0aW9uIHNlbnNpYmx5LCBwbGVhc2UgZGVhY3RpdmF0ZSB0aGUgb3B0aW9uICJUaWNrZXQ6OkZyb250ZW5kOjpDdXN0b21lclRpY2tldE1lc3NhZ2UjIyNRdWV1ZSIgYW5kIHNldCBhIHNlbnNpYmxlIGRlZmF1bHQgcXVldWUgaW4gdGhlIG9wdGlvbiAiVGlja2V0OjpGcm9udGVuZDo6Q3VzdG9tZXJUaWNrZXRNZXNzYWdlIyMjUXVldWVEZWZhdWx0Ii4gQXMgc29vbiBhcyB5b3Ugc2V0IGEgIlRpY2tldCBkZXN0aW5hdGlvbiBxdWV1ZSIgaGVyZSBpbiB0aGUgc2VydmljZSwgdGhlIHRpY2tldCB3aWxsIGltbWVkaWF0ZWx5IGJlIGNyZWF0ZWQgaW4gdGhpcyBxdWV1ZS4gSWYgdGhlIGZpZWxkIHJlbWFpbnMgZW1wdHksIHRoZSBkZWZhdWx0IHF1ZXVlIGNvbmZpZ3VyZWQgYWJvdmUgd2lsbCBiZSB1c2VkLicpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgICAgIDxkdD5bJSBUcmFuc2xhdGUoIkN1c3RvbWVyIGRlZmF1bHQgc2VydmljZSIpIHwgaHRtbCAlXTo8L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJJZiB5b3UgZG8gbm90IGFzc2lnbiBzZXJ2aWNlcyB0byBjdXN0b21lcnMgb3IgY29tcGFuaWVzIGluZGl2aWR1YWxseSwgYnV0IGFsbCBzZXJ2aWNlcyBhcmUgaW5pdGlhbGx5IG9mZmVyZWQgdG8geW91ciBjdXN0b21lcnMgZm9yIHNlbGVjdGlvbiwgdGhlIHN0ZXAgb2YgcmVsZWFzaW5nIGVhY2ggc2VydmljZSBhcyBhIFwiZGVmYXVsdFwiIHNlcnZpY2UgdW5kZXIgXCJBZG1pbiAtPiBDdXN0b21lciB1c2VyIDwtPiBTZXJ2aWNlXCIgKG9yIFwiQ3VzdG9tZXIgPC0+IFNlcnZpY2VcIikgY2FuIGJlIGJ5cGFzc2VkIGhlcmUuIE9mIGNvdXJzZSwgaW4gdGhlIG5leHQgc3RlcCBpdCBpcyBwb3NzaWJsZSB0byByZXN0cmljdCB0aGUgc2VydmljZXMgdmlhIEFDTHMuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgPGR0PlslIFRyYW5zbGF0ZSgiQ3JpdGljYWxpdHkiKSB8IGh0bWwgJV06PC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSGVyZSwgdGhlcmUgaXMgdGhlIHBvc3NpYmlsaXR5IHRvIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHRpY2tldCBwcmlvcml0eSBpbiB0aGUgYmFja2dyb3VuZCBiYXNlZCBvbiB0aGUgZHluYW1pYyBmaWVsZCBcIklUU01Dcml0aWNhbGl0eVwiIGFuZCBcIklUU01JbXBhY3RcIi4gUGxlYXNlIGFjdGl2YXRlIHRoZSBvcHRpb24gXCJUaWNrZXQ6OkV2ZW50TW9kdWxlUG9zdCMjIzk3MDAtU2V0RHluYW1pY0ZpZWxkQ3JpdGljYWxpdHlGcm9tU2VydmljZVwiIGFuZCB0aGUgb3B0aW9uIFwiVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyM5ODAwLVNldFByaW9yaXR5RnJvbUNyaXRpY2FsaXR5QW5kSW1wYWN0TWF0cml4XCIuIEluIHRoZSBuZXh0IHN0ZXAsIHlvdSBoYXZlIHRoZSBwb3NzaWJpbGl0eSB1c2luZyBcIkFkbWluIC0+IENyaXRpY2FsaXR5IOKGlCBJbXBhY3Qg4oaUIFByaW9yaXR5XCIgdG8gc2V0IHRoZSBwcmlvcml0eSB1c2luZyBhIG1hdHJpeC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICA8ZHQ+WyUgVHJhbnNsYXRlKCJLZXl3b3JkcyIpIHwgaHRtbCAlXTo8L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJLZXl3b3JkcyB0byBmYWNpbGl0YXRlIHRoZSBzZWFyY2ggZm9yIHNlcnZpY2VzIHdpdGhpbiB0aGUgc2VydmljZSBjYXRhbG9nLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgICAgIDxkdD5bJSBUcmFuc2xhdGUoIlNlcnZpY2UgRGVzY3JpcHRpb24iKSB8IGh0bWwgJV06PC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiU2VydmljZSBkZXNjcmlwdGlvbnMgKHNob3J0ICYgbG9uZykgc3BlY2lmaWVkIGJ5IFVzZXIgTGFuZ3VhZ2UuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgPGR0PlslIFRyYW5zbGF0ZSgiRGVzY3JpcHRpb24gKHNob3J0KSIpIHwgaHRtbCAlXTo8L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJTaG9ydCBzdW1tYXJ5IG9mIHRoZSBzZXJ2aWNlLCBtYWlubHkgdXNlZCBpbiB0aGUgQ3VzdG9tZXJEYXNoYm9hcmQuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgPGR0PlslIFRyYW5zbGF0ZSgiRGVzY3JpcHRpb24gKGxvbmcpIikgfCBodG1sICVdOjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkRlc2NyaXB0aW9uIG9mIHRoZSBzZXJ2aWNlLiBTY3JlZW5zaG90cyBhbmQgdGFibGVzIGFyZSBhbHNvIGFsbG93ZWQuIFBsZWFzZSBlbnN1cmUgdGhlIGNvcnJlY3Qgd2lkdGggb2YgdGhlIGltYWdlIGZvciBzY3JlZW5zaG90cy4gVGhpcyBjYW4gYmUgYWRqdXN0ZWQgaW4gdGhlIGNrZWRpdG9yIGFmdGVyIHVwbG9hZGluZyB0aGUgc2NyZWVuc2hvdC4gQSB3aWR0aCBvZiA2MDBweCBoYXMgcHJvdmVuIHRvIGJlIHVzZWZ1bCBvciB5b3UgY2FuIGNvbmZpZ3VyZSBhIFwibWF4LXdpZHRoXCIgb2YgOTUlIHVuZGVyIEFkdmFuY2VkLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgICAgIDxkdD5bJSBUcmFuc2xhdGUoIkFkZCBtb3JlIHNlcnZpY2UgY2F0YWxvZyBmaWVsZHMiKSB8IGh0bWwgJV06PC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiWW91IGhhdmUgdGhlIG9wdGlvbiBvZiBhZGRpbmcgZnVydGhlciBmaWVsZHMgaGVyZSBpbiB0aGUgc2VydmljZSBjYXRhbG9nIGF0IGFueSB0aW1lLiBUbyBkbyB0aGlzLCBwbGVhc2UgZ28gdG8gXCJBZG1pbiAtPiBEeW5hbWljRmllbGRzXCIgYW5kIGNyZWF0ZSB0aGUgbmV3IGZpZWxkIG9mIHRoZSBvYmplY3QgdHlwZSBcIlNlcnZpY2VcIi4gWW91IGNhbiB0aGVuIGFjdGl2YXRlIHRoZSBmaWVsZCBmb3IgdGhlIGN1c3RvbWVyIGRhc2hib2FyZCB1bmRlciBcIkFkbWluIC0+IER5bmFtaWNGaWVsZCBTY3JlZW5zXCIgYnkgYXNzaWduaW5nIGl0IHVuZGVyIFwiQ3VzdG9tZXJEYXNoYm9hcmRUaWxlIFNlcnZpY2VDYXRhbG9nXCIuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlcnZpY2VSZWZlcmVuY2UiKSAlXQojIEVPIFNlcnZpY2VDYXRhbG9nCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlldyIpICVdCg==</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AgentITSMService.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSAgLSBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTVNlcnZpY2UudHQKIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXciKSAlXQo8ZGl2IGNsYXNzPSJNYWluQm94IEFyaWFSb2xlTWFpbiBTcGFjaW5nVG9wIj4KICAgIDxkaXYgY2xhc3M9Ilc3NXBjIFNwYWNpbmdCb3R0b20gQ2VudGVyQm94Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiT3ZlcnZpZXciKSB8IGh0bWwgJV06IFslIFRyYW5zbGF0ZSgiU2VydmljZSIpIHwgaHRtbCAlXTwvaDI+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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSAgLSBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTVNlcnZpY2Vab29tLnR0CiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+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+WyUgVHJhbnNsYXRlKCJDcml0aWNhbGl0eSIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuQ3JpdGljYWxpdHkpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRGVzY3JpcHRpb24gKHNob3J0KSIpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiAoc2hvcnQpIikgfCBodG1sICVdOiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5EZXNjcmlwdGlvblNob3J0KSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiAobG9uZykiKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiRGVzY3JpcHRpb24gKGxvbmcpIikgfCBodG1sICVdOiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXBvcHVwcyBtcy1hbGxvdy1wb3B1cHMgYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94IiB3aWR0aD0iMTAwJSIgZnJhbWVib3JkZXI9IjAiIGlkPSJTZXJ2aWNlSURbJSBEYXRhLlNlcnZpY2VJRCB8IGh0bWwgJV0iIG9ubG9hZD0iQ29yZS5BZ2VudC5JVFNNU2VydmljZVpvb20uUmVzaXplSWZyYW1lKHRoaXMpOyIgc3JjPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNU2VydmljZVpvb207U3ViYWN0aW9uPUhUTUxWaWV3O1NlcnZpY2VJRD1bJSBEYXRhLlNlcnZpY2VJRCB8IGh0bWwgJV1bJSBJRiAhQ29uZmlnKCJTZXNzaW9uVXNlQ29va2llIikgJV1bJSBFbnYoIlNlc3Npb25OYW1lIikgfCBodG1sICVdPVslIEVudigiU2Vzc2lvbklEIikgfCBodG1sICVdWyUgRU5EICVdIj48L2lmcmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiMgVG9EbzogTW92ZSB0aGlzIHRvIGEgY3VzdG9tIENTUyB3aGVuIHBvcnRpbmcgaW50byB0aGUgY29yZS4KPHN0eWxlPgogICAgLk1haW5Cb3ggLkNvbnRlbnRDb2x1bW4gLkNvbnRlbnQgPiBmaWVsZHNldC5UYWJsZUxpa2UuRml4ZWRMYWJlbFNtYWxsID4gbGFiZWwgewogICAgICAgIHdpZHRoOiAxNDBweCAhaW1wb3J0YW50OwogICAgfQoKICAgIC5Db250ZW50Q29sdW1uID4gLldpZGdldEJveCA+IC5Db250ZW50ID4gZmllbGRzZXQuVGFibGVMaWtlLkZpeGVkTGFiZWxTbWFsbCA+IC5GaWVsZCwKICAgIC5Db250ZW50Q29sdW1uID4gLldpZGdldEJveCA+IC5Db250ZW50ID4gZmllbGRzZXQuVGFibGVMaWtlLkZpeGVkTGFiZWxTbWFsbCA+IC5Sb3cgPiAuRmllbGQsCiAgICAuQ29udGVudENvbHVtbiA+IC5XaWRnZXRCb3ggPiAuQ29udGVudCA+IGZpZWxkc2V0LlRhYmxlTGlrZS5GaXhlZExhYmVsU21hbGwgPiAuVmFsdWUsCiAgICAuQ29udGVudENvbHVtbiA+IC5XaWRnZXRCb3ggPiAuQ29udGVudCA+IGZpZWxkc2V0LlRhYmxlTGlrZS5GaXhlZExhYmVsU21hbGwgPiAuUm93ID4gLlZhbHVlIHsKICAgICAgICBtYXJnaW4tbGVmdDogMTQwcHggIWltcG9ydGFudDsKICAgIH0KPC9zdHlsZT4KClslIFJlbmRlckJsb2NrU3RhcnQoIlNlcnZpY2VEeW5hbWljRmllbGQiKSAlXQpbJSBJRiBEYXRhLlRpdGxlRmllbGQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHAgdGl0bGU9IlslIERhdGEuVGV4dCB8IGh0bWwgJV0iIHN0eWxlPSJbJSBEYXRhLlN0eWxlIHwgaHRtbCAlXSI+WyUgRGF0YS5UZXh0IHwgaHRtbCAlXTwvcD4KWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXJ2aWNlRHluYW1pY0ZpZWxkTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aXRsZT0iWyUgRGF0YS5UaXRsZSAlXSI+PGEgaHJlZj0iWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iWyUgSUYgRGF0YS5MaW5rUHJldmlldyAlXSBkYXRhLXRyaWdnZXI9ImZsb2F0ZXIiIGRhdGEtZmxvYXRlci11cmw9IlslIERhdGEuTGlua1ByZXZpZXcgfCBJbnRlcnBvbGF0ZSAlXSJbJSBFTkQgJV0gdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJEeW5hbWljRmllbGRMaW5rIj5bJSBEYXRhLlZhbHVlICVdPC9hPjwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlcnZpY2VEeW5hbWljRmllbGRMaW5rIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VydmljZUR5bmFtaWNGaWVsZFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlICVdIj5bJSBEYXRhLlZhbHVlICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VydmljZUR5bmFtaWNGaWVsZFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiU2VydmljZUR5bmFtaWNGaWVsZCIpICVdCgojIEVPIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoIkNvbW1lbnQiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkNvbW1lbnQpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU0xBIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIERvbnRQcmludCBTcGFjaW5nVG9wICBTcGFjaW5nQm90dG9tTWVkaXVtIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNob3cgb3IgaGlkZSB0aGUgY29udGVudCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQXNzb2NpYXRlZCBTTEFzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiU0xBIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJUeXBlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDaGFuZ2VkIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU0xBUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNU0xBWm9vbTtTTEFJRD1bJSBEYXRhLlNMQUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHRpdGxlPSJbJSBEYXRhLkNvbW1lbnQgfCBodG1sICVdIj5bJSBEYXRhLkNvbW1lbnQgfCB0cnVuY2F0ZSgxMDApIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIFRyYW5zbGF0ZShEYXRhLlR5cGUpIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuQ2hhbmdlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJTTEFSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTTEEiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiTGlua1RhYmxlQ29tcGxleCIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5MaW5rVGFibGVTdHJnICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTGlua1RhYmxlQ29tcGxleCIpICVdCgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AgentITSMSLAZoom.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSAgLSBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTVNMQVpvb20udHQKIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4iPgogICAgPGRpdiBjbGFzcz0iQ2xlYXJMZWZ0Ij48L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkhlYWRsaW5lIj4KICAgICAgICA8aDE+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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA1YWE0ODUyNzEzZWU0YjM4NDU4OTE2ODJmNDM4NTkzOWZkMDg2NTQ2IC0gS2VybmVsL1N5c3RlbS9TZXJ2aWNlLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6U3BlbGxDaGVjaykKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6U2VydmljZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayAocXcoOmFsbCkpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkNoZWNrSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKIyBSb3RoZXIgT1NTIC8gSVRTTUNvcmUKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JywKIyBFTyBJVFNNQ29yZQogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VHJhbnNsYXRpb25zJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnLAojIFJvdGhlck9TUyBTZXJ2aWNlQ2F0YWxvZwogICAgJ0tlcm5lbDo6U3lzdGVtOjpBQ0w6OkRCOjpBQ0wnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJwojIEVPIFNlcnZpY2VDYXRhbG9nCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UgLSBzZXJ2aWNlIGxpYgoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgc2VydmljZSBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgbXkgJFNlcnZpY2VPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAkU2VsZi0+e0NhY2hlVHlwZX0gPSAnU2VydmljZSc7CiAgICAkU2VsZi0+e0NhY2hlVFRMfSAgPSA2MCAqIDYwICogMjQgKiAyMDsKIyBSb3RoZXIgT1NTIC8gSVRTTUNvcmUKCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZCBmb3IgSVRTTUNyaXRpY2FsaXR5CiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnQXJyYXlSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlICA9PiBbICdUaWNrZXQnIF0sCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gewogICAgICAgICAgICBJVFNNQ3JpdGljYWxpdHkgPT4gMSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmb3IgSVRTTUNyaXRpY2FsaXR5CiAgICBteSAlUG9zc2libGVWYWx1ZXM7CiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICREeW5hbWljRmllbGRDb25maWdBcnJheVJlZiB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBnZXQgUG9zc2libGVWYWx1ZXMKICAgICAgICAkUG9zc2libGVWYWx1ZXN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntQb3NzaWJsZVZhbHVlc30gfHwge307CiAgICB9CgogICAgIyBzZXQgdGhlIGNyaXRpY2FsaXR5IGxpc3QKICAgICRTZWxmLT57Q3JpdGljYWxpdHlMaXN0fSA9ICRQb3NzaWJsZVZhbHVlc3tJVFNNQ3JpdGljYWxpdHl9OwojIEVPIElUU01Db3JlCgogICAgIyBsb2FkIGdlbmVyYXRvciBwcmVmZXJlbmNlcyBtb2R1bGUKICAgIG15ICRHZW5lcmF0b3JNb2R1bGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NlcnZpY2U6OlByZWZlcmVuY2VzTW9kdWxlJykKICAgICAgICB8fCAnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2U6OlByZWZlcmVuY2VzREInOwogICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCRHZW5lcmF0b3JNb2R1bGUpICkgewogICAgICAgICRTZWxmLT57UHJlZmVyZW5jZXNPYmplY3R9ID0gJEdlbmVyYXRvck1vZHVsZS0+bmV3KCk7CiAgICB9CiMgUm90aGVyIE9TUyAvIElUU01Db3JlCiAgICAkU2VsZi0+e0RCT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwojIEVPIElUU01Db3JlCgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgU2VydmljZUxpc3QoKQoKcmV0dXJuIGEgaGFzaCBsaXN0IG9mIHNlcnZpY2VzCgogICAgbXkgJVNlcnZpY2VMaXN0ID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VMaXN0KAogICAgICAgIFZhbGlkICA9PiAwLCAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDEgKDB8MSkKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgU2VydmljZUxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFVzZXJJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgdmFsaWQgcGFyYW0KICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbGlkfSApIHsKICAgICAgICAkUGFyYW17VmFsaWR9ID0gMTsKICAgIH0KCiAgICAjIHJlYWQgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICdTZXJ2aWNlTGlzdDo6VmFsaWQ6OicgLiAkUGFyYW17VmFsaWR9OwoKICAgIGlmICggJFBhcmFte1ZhbGlkfSAmJiBkZWZpbmVkICRQYXJhbXtLZWVwQ2hpbGRyZW59ICYmICRQYXJhbXtLZWVwQ2hpbGRyZW59IGVxICcxJyApIHsKICAgICAgICAkQ2FjaGVLZXkgLj0gJzo6S2VlcENoaWxkcmVuOjonIC4gJFBhcmFte0tlZXBDaGlsZHJlbn07CiAgICB9CgogICAgbXkgJENhY2hlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkdldCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CiAgICByZXR1cm4gJXskQ2FjaGV9IGlmIHJlZiAkQ2FjaGUgZXEgJ0hBU0gnOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBhc2sgZGF0YWJhc2UKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgbmFtZSwgdmFsaWRfaWQgRlJPTSBzZXJ2aWNlJywKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAlU2VydmljZUxpc3Q7CiAgICBteSAlU2VydmljZVZhbGlkTGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRTZXJ2aWNlTGlzdHsgJFJvd1swXSB9ICAgICAgPSAkUm93WzFdOwogICAgICAgICRTZXJ2aWNlVmFsaWRMaXN0eyAkUm93WzBdIH0gPSAkUm93WzJdOwogICAgfQoKICAgIGlmICggISRQYXJhbXtWYWxpZH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgICAgICBWYWx1ZSA9PiBcJVNlcnZpY2VMaXN0LAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICVTZXJ2aWNlTGlzdCBpZiAhJFBhcmFte1ZhbGlkfTsKICAgIH0KCiAgICAjIGdldCB2YWxpZCBpZHMKICAgIG15IEBWYWxpZElEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZElEc0dldCgpOwoKICAgICMgZHVwbGljYXRlIHNlcnZpY2UgbGlzdAogICAgbXkgJVNlcnZpY2VMaXN0VG1wID0gJVNlcnZpY2VMaXN0OwoKICAgICMgYWRkIHN1ZmZpeCBmb3IgY29ycmVjdCBzb3J0aW5nCiAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIHNvcnQga2V5cyAlU2VydmljZUxpc3RUbXAgKSB7CiAgICAgICAgJFNlcnZpY2VMaXN0VG1weyRTZXJ2aWNlSUR9IC49ICc6Oic7CiAgICB9CgogICAgbXkgJVNlcnZpY2VJbnZhbGlkTGlzdDsKICAgIFNFUlZJQ0VJRDoKICAgIGZvciBteSAkU2VydmljZUlEICggc29ydCB7ICRTZXJ2aWNlTGlzdFRtcHskYX0gY21wICRTZXJ2aWNlTGlzdFRtcHskYn0gfSBrZXlzICVTZXJ2aWNlTGlzdFRtcCApCiAgICB7CgogICAgICAgIG15ICRWYWxpZCA9IHNjYWxhciBncmVwIHsgJF8gZXEgJFNlcnZpY2VWYWxpZExpc3R7JFNlcnZpY2VJRH0gfSBAVmFsaWRJRHM7CgogICAgICAgIG5leHQgU0VSVklDRUlEIGlmICRWYWxpZDsKCiAgICAgICAgJFNlcnZpY2VJbnZhbGlkTGlzdHsgJFNlcnZpY2VMaXN0eyRTZXJ2aWNlSUR9IH0gPSAxOwogICAgICAgIGRlbGV0ZSAkU2VydmljZUxpc3R7JFNlcnZpY2VJRH07CiAgICB9CgogICAgIyBkZWxldGUgaW52YWxpZCBzZXJ2aWNlcyBhbmQgY2hpbGRyZW4KICAgIGlmICggIWRlZmluZWQgJFBhcmFte0tlZXBDaGlsZHJlbn0gfHwgISRQYXJhbXtLZWVwQ2hpbGRyZW59ICkgewogICAgICAgIGZvciBteSAkU2VydmljZUlEICggc29ydCBrZXlzICVTZXJ2aWNlTGlzdCApIHsKCiAgICAgICAgICAgIElOVkFMSUROQU1FOgogICAgICAgICAgICBmb3IgbXkgJEludmFsaWROYW1lICggc29ydCBrZXlzICVTZXJ2aWNlSW52YWxpZExpc3QgKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkU2VydmljZUxpc3R7JFNlcnZpY2VJRH0gPX4gbXsgXEEgXFEkSW52YWxpZE5hbWVcRSA6OiB9eG1zICkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkU2VydmljZUxpc3R7JFNlcnZpY2VJRH07CiAgICAgICAgICAgICAgICAgICAgbGFzdCBJTlZBTElETkFNRTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBjYWNoZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPlNldCgKICAgICAgICBUeXBlICA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFwlU2VydmljZUxpc3QsCiAgICApOwoKICAgIHJldHVybiAlU2VydmljZUxpc3Q7Cn0KCj1oZWFkMiBTZXJ2aWNlTGlzdEdldCgpCgpyZXR1cm4gYSBsaXN0IG9mIHNlcnZpY2VzIHdpdGggdGhlIGNvbXBsZXRlIGxpc3Qgb2YgYXR0cmlidXRlcyBmb3IgZWFjaCBzZXJ2aWNlCgogICAgbXkgJFNlcnZpY2VMaXN0ID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VMaXN0R2V0KAogICAgICAgIFZhbGlkICA9PiAwLCAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDEgKDB8MSkKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgcmV0dXJucwoKICAgICRTZXJ2aWNlTGlzdCA9IFsKICAgICAgICB7CiAgICAgICAgICAgIFNlcnZpY2VJRCAgPT4gMSwKICAgICAgICAgICAgUGFyZW50SUQgICA9PiAwLAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdNeVNlcnZpY2UnLAogICAgICAgICAgICBOYW1lU2hvcnQgID0+ICdNeVNlcnZpY2UnLAogICAgICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgICAgIENvbW1lbnQgICAgPT4gJ1NvbWUgQ29tbWVudCcKICAgICAgICAgICAgQ3JlYXRlVGltZSA9PiAnMjAxMS0wMi0wOCAxNTowODowMCcsCiAgICAgICAgICAgIENoYW5nZVRpbWUgPT4gJzIwMTEtMDYtMTEgMTc6MjI6MDAnLAogICAgICAgICAgICBDcmVhdGVCeSAgID0+IDEsCiAgICAgICAgICAgIENoYW5nZUJ5ICAgPT4gMSwKIyBSb3RoZXIgT1NTIC8gSVRTTUNvcmUKICAgICAgICAgICAgVHlwZUlEICAgICAgICAgICA9PiAxNiwKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICA9PiAnQmFja2VuZCcsCiAgICAgICAgICAgIENyaXRpY2FsaXR5ICAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAxLAogICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ29wZXJhdGlvbmFsJywKIyBFTyBJVFNNQ29yZQojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgICAgICBEZXNjcmlwdGlvbnMgPT4gewogICAgICAgICAgICAgICAgZW4gPT4gewogICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uU2hvcnQgID0+ICdTZXJ2aWNlIEEnLAogICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uTG9uZyAgID0+ICdUaGlzIGlzIFNlcnZpY2UgQS4nLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRlID0+IHsKICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvblNob3J0ICA9PiAnU2VydmljZSBBJywKICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbkxvbmcgICA9PiAnRGFzIGlzdCBTZXJ2aWNlIEEuJywKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0KICAgICAgICAgICAgVGlja2V0VHlwZUlEcyAgICA9PiBbIDEsIDIsIDMgXSwKICAgICAgICAgICAgS2V5d29yZHMgICAgICAgICA9PiAnc2VydmljZSBoaW50cyBmb3IgZmlsdGVyJywKIyBFTyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBTZXJ2aWNlSUQgID0+IDIsCiAgICAgICAgICAgIFBhcmVudElEICAgPT4gMSwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTXlTZXJ2aWNlOjpNeVN1YlNlcnZpY2UnLAogICAgICAgICAgICBOYW1lU2hvcnQgID0+ICdNeVN1YlNlcnZpY2UnLAogICAgICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgICAgIENvbW1lbnQgICAgPT4gJ1NvbWUgQ29tbWVudCcKICAgICAgICAgICAgQ3JlYXRlVGltZSA9PiAnMjAxMS0wMi0wOCAxNTowODowMCcsCiAgICAgICAgICAgIENoYW5nZVRpbWUgPT4gJzIwMTEtMDYtMTEgMTc6MjI6MDAnLAogICAgICAgICAgICBDcmVhdGVCeSAgID0+IDEsCiAgICAgICAgICAgIENoYW5nZUJ5ICAgPT4gMSwKIyBSb3RoZXIgT1NTIC8gSVRTTUNvcmUKICAgICAgICAgICAgVHlwZUlEICAgICAgICAgICA9PiAxNiwKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICA9PiAnQmFja2VuZCcsCiAgICAgICAgICAgIENyaXRpY2FsaXR5ICAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAxLAogICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ29wZXJhdGlvbmFsJywKIyBFTyBJVFNNQ29yZQogICAgICAgIH0sCiAgICAgICAgIyAuLi4KICAgIF07Cgo9Y3V0CgpzdWIgU2VydmljZUxpc3RHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFVzZXJJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgdmFsaWQgcGFyYW0KICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbGlkfSApIHsKICAgICAgICAkUGFyYW17VmFsaWR9ID0gMTsKICAgIH0KCiAgICAjIGNoZWNrIGNhY2hlZCByZXN1bHRzCiAgICBteSAkQ2FjaGVLZXkgPSAnQ2FjaGU6OlNlcnZpY2VMaXN0R2V0OjpWYWxpZDo6JyAuICRQYXJhbXtWYWxpZH07CiAgICBteSAkQ2FjaGUgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+R2V0KAogICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKICAgIHJldHVybiAkQ2FjaGUgaWYgZGVmaW5lZCAkQ2FjaGU7CgogICAgIyBjcmVhdGUgU1FMIHF1ZXJ5CiAgICBteSAkU1FMID0gJ1NFTEVDVCBpZCwgbmFtZSwgdmFsaWRfaWQsIGNvbW1lbnRzLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5ICcKIyBSb3RoZXIgT1NTIC8gSVRTTUNvcmUKICAgICAgICAuICIsIHR5cGVfaWQsIGNyaXRpY2FsaXR5ICIKIyBFTyBJVFNNQ29yZQojIFJvdGhlck9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgLiAiLCBrZXl3b3JkcyAiCiMgRU8gU2VydmljZUNhdGFsb2cKICAgICAgICAuICdGUk9NIHNlcnZpY2UnOwoKICAgIGlmICggJFBhcmFte1ZhbGlkfSApIHsKICAgICAgICAkU1FMIC49ICcgV0hFUkUgdmFsaWRfaWQgSU4gKCcgLiBqb2luICcsICcsCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZElEc0dldCgpIC4gJyknOwogICAgfQoKICAgICRTUUwgLj0gJyBPUkRFUiBCWSBuYW1lJzsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgYXNrIGRhdGFiYXNlCiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICRTUUwsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQFNlcnZpY2VMaXN0OwogICAgbXkgJVNlcnZpY2VOYW1lMklEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbXkgJVNlcnZpY2VEYXRhOwogICAgICAgICRTZXJ2aWNlRGF0YXtTZXJ2aWNlSUR9ICA9ICRSb3dbMF07CiAgICAgICAgJFNlcnZpY2VEYXRhe05hbWV9ICAgICAgID0gJFJvd1sxXTsKICAgICAgICAkU2VydmljZURhdGF7VmFsaWRJRH0gICAgPSAkUm93WzJdOwogICAgICAgICRTZXJ2aWNlRGF0YXtDb21tZW50fSAgICA9ICRSb3dbM10gfHwgJyc7CiAgICAgICAgJFNlcnZpY2VEYXRhe0NyZWF0ZVRpbWV9ID0gJFJvd1s0XTsKICAgICAgICAkU2VydmljZURhdGF7Q3JlYXRlQnl9ICAgPSAkUm93WzVdOwogICAgICAgICRTZXJ2aWNlRGF0YXtDaGFuZ2VUaW1lfSA9ICRSb3dbNl07CiAgICAgICAgJFNlcnZpY2VEYXRhe0NoYW5nZUJ5fSAgID0gJFJvd1s3XTsKIyBSb3RoZXIgT1NTIC8gSVRTTUNvcmUKICAgICAgICAkU2VydmljZURhdGF7VHlwZUlEfSAgICAgID0gJFJvd1s4XTsKICAgICAgICAkU2VydmljZURhdGF7Q3JpdGljYWxpdHl9ID0gJFJvd1s5XSB8fCAnJzsKIyBFTyBJVFNNQ29yZQojIFJvdGhlck9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgJFNlcnZpY2VEYXRhe0tleXdvcmRzfSAgICAgICAgID0gJFJvd1sxMF07CiMgRU8gU2VydmljZUNhdGFsb2cKICAgICAgICAjIGFkZCBzZXJ2aWNlIGRhdGEgdG8gc2VydmljZSBsaXN0CiAgICAgICAgcHVzaCBAU2VydmljZUxpc3QsIFwlU2VydmljZURhdGE7CgogICAgICAgICMgYnVpbGQgc2VydmljZSBpZCBsb29rdXAgaGFzaAogICAgICAgICRTZXJ2aWNlTmFtZTJJRHsgJFNlcnZpY2VEYXRhe05hbWV9IH0gPSAkU2VydmljZURhdGF7U2VydmljZUlEfTsKICAgIH0KCiAgICBmb3IgbXkgJFNlcnZpY2VEYXRhIChAU2VydmljZUxpc3QpIHsKCiAgICAgICAgIyBjcmVhdGUgc2hvcnQgbmFtZSBhbmQgcGFyZW50IGlkCiAgICAgICAgJFNlcnZpY2VEYXRhLT57TmFtZVNob3J0fSA9ICRTZXJ2aWNlRGF0YS0+e05hbWV9OwogICAgICAgIGlmICggJFNlcnZpY2VEYXRhLT57TmFtZX0gPX4gbXsgXEEgKC4qKSA6OiAoLis/KSBceiB9eG1zICkgewogICAgICAgICAgICBteSAkUGFyZW50TmFtZSA9ICQxOwogICAgICAgICAgICAkU2VydmljZURhdGEtPntOYW1lU2hvcnR9ID0gJDI7CiAgICAgICAgICAgICRTZXJ2aWNlRGF0YS0+e1BhcmVudElEfSAgPSAkU2VydmljZU5hbWUySUR7JFBhcmVudE5hbWV9OwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgc2VydmljZSBwcmVmZXJlbmNlcwogICAgICAgIG15ICVQcmVmZXJlbmNlcyA9ICRTZWxmLT5TZXJ2aWNlUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgICAgIFNlcnZpY2VJRCA9PiAkU2VydmljZURhdGEtPntTZXJ2aWNlSUR9LAogICAgICAgICk7CgogICAgICAgICMgbWVyZ2UgaGFzaAogICAgICAgIGlmICglUHJlZmVyZW5jZXMpIHsKICAgICAgICAgICAgJXskU2VydmljZURhdGF9ID0gKCAleyRTZXJ2aWNlRGF0YX0sICVQcmVmZXJlbmNlcyApOwogICAgICAgIH0KCiMgUm90aGVyT1NTIC8gU2VydmljZUNhdGFsb2cKICAgICAgICAjIEdldCBhbGwgbGlua2VkIHRpY2tldCB0eXBlIElEcy4KICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PgogICAgICAgICAgICAgICAgJ1NFTEVDVCB0aWNrZXRfdHlwZV9pZCBGUk9NIHNlcnZpY2VfdHlwZSBXSEVSRSBzZXJ2aWNlX2lkID0gPycsCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRTZXJ2aWNlRGF0YS0+e1NlcnZpY2VJRH0gXSwKICAgICAgICApOwoKICAgICAgICBteSBAVGlja2V0VHlwZUlEczsKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgcHVzaCBAVGlja2V0VHlwZUlEcywgJFJvd1swXTsKICAgICAgICB9CiAgICAgICAgJFNlcnZpY2VEYXRhLT57VGlja2V0VHlwZUlEc30gPSBcQFRpY2tldFR5cGVJRHM7CiMgRU8gU2VydmljZUNhdGFsb2cKCiMgUm90aGVyIE9TUyAvIElUU01Db3JlCiAgICAgICAgIyBnZXQgY3VycmVudCBpbmNpZGVudCBzdGF0ZSwgY2FsY3VsYXRlZCBmcm9tIHJlbGF0ZWQgY29uZmlnIGl0ZW1zIGFuZCBjaGlsZCBzZXJ2aWNlcwogICAgICAgIG15ICVOZXdTZXJ2aWNlRGF0YSA9ICRTZWxmLT5fU2VydmljZUdldEN1cnJlbnRJbmNpZGVudFN0YXRlKAogICAgICAgICAgICBTZXJ2aWNlRGF0YSA9PiAkU2VydmljZURhdGEsCiAgICAgICAgICAgIFByZWZlcmVuY2VzID0+IFwlUHJlZmVyZW5jZXMsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgJFNlcnZpY2VEYXRhID0gXCVOZXdTZXJ2aWNlRGF0YTsKIyBFTyBJVFNNQ29yZQoKIyBSb3RoZXJPU1MgLyBTZXJ2aWNlQ2F0YWxvZwoKICAgICAgICAjIGdldCBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBkYXRhCiAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgU0VMRUNUIGRlc2NyaXB0aW9uX3Nob3J0LCBkZXNjcmlwdGlvbl9sb25nLCBjb250ZW50X3R5cGUsIGxhbmd1YWdlCiAgICAgICAgICAgICAgICBGUk9NIHNlcnZpY2VfZGVzY3JpcHRpb24KICAgICAgICAgICAgICAgIFdIRVJFIHNlcnZpY2VfaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkU2VydmljZURhdGEtPntTZXJ2aWNlSUR9IF0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJURlc2NyaXB0aW9uczsKCiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgICAgICAjIGFkZCB0byBkZXNjcmlwdGlvbnMgaGFzaCB3aXRoIHRoZSBsYW5ndWFnZSBhcyBrZXkKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3sgJFJvd1szXSB9ID0gewogICAgICAgICAgICAgICAgRGVzY3JpcHRpb25TaG9ydCA9PiAkUm93WzBdLAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb25Mb25nICA9PiAkUm93WzFdLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICA9PiAkUm93WzJdLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlcnZpY2VEYXRhLT57RGVzY3JpcHRpb25zfSA9IFwlRGVzY3JpcHRpb25zOwoKIyBFTyBTZXJ2aWNlQ2F0YWxvZwogICAgfQoKICAgIGlmIChAU2VydmljZUxpc3QpIHsKCiAgICAgICAgIyBzZXQgY2FjaGUKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+U2V0KAogICAgICAgICAgICBUeXBlICA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgICAgIFZhbHVlID0+IFxAU2VydmljZUxpc3QsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gXEBTZXJ2aWNlTGlzdDsKfQoKPWhlYWQyIFNlcnZpY2VHZXQoKQoKcmV0dXJuIGEgc2VydmljZSBhcyBoYXNoCgpSZXR1cm4KICAgICRTZXJ2aWNlRGF0YXtTZXJ2aWNlSUR9CiAgICAkU2VydmljZURhdGF7UGFyZW50SUR9CiAgICAkU2VydmljZURhdGF7TmFtZX0KICAgICRTZXJ2aWNlRGF0YXtOYW1lU2hvcnR9CiAgICAkU2VydmljZURhdGF7VmFsaWRJRH0KICAgICRTZXJ2aWNlRGF0YXtDb21tZW50fQogICAgJFNlcnZpY2VEYXRhe0NyZWF0ZVRpbWV9CiAgICAkU2VydmljZURhdGF7Q3JlYXRlQnl9CiAgICAkU2VydmljZURhdGF7Q2hhbmdlVGltZX0KICAgICRTZXJ2aWNlRGF0YXtDaGFuZ2VCeX0KIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgIERlc2NyaXB0aW9ucyA9PiB7CiAgICAgICAgZW4gPT4gewogICAgICAgICAgICBEZXNjcmlwdGlvblNob3J0ICA9PiAnU2VydmljZSBBJywKICAgICAgICAgICAgRGVzY3JpcHRpb25Mb25nICAgPT4gJ1RoaXMgaXMgU2VydmljZSBBLicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgID0+ICd0ZXh0L2h0bWwnLAogICAgICAgIH0sCiAgICAgICAgZGUgPT4gewogICAgICAgICAgICBEZXNjcmlwdGlvblNob3J0ICA9PiAnU2VydmljZSBBJywKICAgICAgICAgICAgRGVzY3JpcHRpb25Mb25nICAgPT4gJ0RhcyBpc3QgU2VydmljZSBBLicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgID0+ICd0ZXh0L2h0bWwnLAogICAgICAgIH0sCiAgICB9CiAgICAkU2VydmljZURhdGF7VGlja2V0VHlwZUlEc30KICAgICRTZXJ2aWNlRGF0YXtEZXN0UXVldWVJRH0KICAgICRTZXJ2aWNlRGF0YXtLZXl3b3Jkc30KIyBFTyBTZXJ2aWNlQ2F0YWxvZwojIFJvdGhlciBPU1MgLyBJVFNNQ29yZQogICAgJFNlcnZpY2VEYXRhe1R5cGVJRH0KICAgICRTZXJ2aWNlRGF0YXtUeXBlfQogICAgJFNlcnZpY2VEYXRhe0NyaXRpY2FsaXR5fQogICAgJFNlcnZpY2VEYXRhe0N1ckluY2lTdGF0ZUlEfSAgICAjIE9ubHkgaWYgSW5jaWRlbnRTdGF0ZSBpcyAxCiAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlfSAgICAgICMgT25seSBpZiBJbmNpZGVudFN0YXRlIGlzIDEKICAgICRTZXJ2aWNlRGF0YXtDdXJJbmNpU3RhdGVUeXBlfSAgIyBPbmx5IGlmIEluY2lkZW50U3RhdGUgaXMgMQoKICAgIG15ICVTZXJ2aWNlRGF0YSA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlR2V0KAogICAgICAgIFNlcnZpY2VJRCAgICAgPT4gMTIzLAogICAgICAgIEluY2lkZW50U3RhdGUgPT4gMSwgIyBPcHRpb25hbCwgcmV0dXJucyBDdXJJbmNpU3RhdGUgZXRjLgogICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICk7CiMgRU8gSVRTTUNvcmUKCiAgICBteSAlU2VydmljZURhdGEgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUdldCgKICAgICAgICBTZXJ2aWNlSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKCiAgICBteSAlU2VydmljZURhdGEgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUdldCgKICAgICAgICBOYW1lICAgID0+ICdTZXJ2aWNlOjpTdWJTZXJ2aWNlJywKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFNlcnZpY2VHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZWl0aGVyIFNlcnZpY2VJRCBvciBOYW1lIG11c3QgYmUgcGFzc2VkCiAgICBpZiAoICEkUGFyYW17U2VydmljZUlEfSAmJiAhJFBhcmFte05hbWV9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTZXJ2aWNlSUQgb3IgTmFtZSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgdGhhdCBub3QgYm90aCBTZXJ2aWNlSUQgYW5kIE5hbWUgYXJlIGdpdmVuCiAgICBpZiAoICRQYXJhbXtTZXJ2aWNlSUR9ICYmICRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgZWl0aGVyIFNlcnZpY2VJRCBPUiBOYW1lIC0gbm90IGJvdGghJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxvb2t1cCB0aGUgU2VydmljZUlECiAgICBpZiAoICRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkUGFyYW17U2VydmljZUlEfSA9ICRTZWxmLT5TZXJ2aWNlTG9va3VwKAogICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgY2FjaGVkIHJlc3VsdHMKICAgIG15ICRDYWNoZUtleSA9ICdDYWNoZTo6U2VydmljZUdldDo6JyAuICRQYXJhbXtTZXJ2aWNlSUR9OwojIFJvdGhlciBPU1MgLyBJVFNNQ29yZQogICAgIyBhZGQgdGhlIEluY2lkZW50U3RhdGUgcGFyYW1ldGVyIHRvIHRoZSBjYWNoZSBrZXkKICAgICRQYXJhbXtJbmNpZGVudFN0YXRlfSB8fD0gMDsKICAgICRDYWNoZUtleSAuPSAnOjpJbmNpZGVudFN0YXRlOjonIC4gJFBhcmFte0luY2lkZW50U3RhdGV9OwojIEVPIElUU01Db3JlCiAgICBteSAkQ2FjaGUgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+R2V0KAogICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKICAgIHJldHVybiAleyRDYWNoZX0gaWYgcmVmICRDYWNoZSBlcSAnSEFTSCc7CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBzZXJ2aWNlIGZyb20gZGIKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4KICAgICAgICAgICAgJ1NFTEVDVCBpZCwgbmFtZSwgdmFsaWRfaWQsIGNvbW1lbnRzLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5ICcKIyBSb3RoZXIgT1NTIC8gSVRTTUNvcmUKICAgICAgICAgICAgLiAiLCB0eXBlX2lkLCBjcml0aWNhbGl0eSAiCiMgRU8gSVRTTUNvcmUKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgICAgICAgICAgLiAiLCBkZXN0X3F1ZXVlaWQsIGtleXdvcmRzICIKIyBFTyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgICAgICAuICdGUk9NIHNlcnZpY2UgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17U2VydmljZUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJVNlcnZpY2VEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFNlcnZpY2VEYXRhe1NlcnZpY2VJRH0gID0gJFJvd1swXTsKICAgICAgICAkU2VydmljZURhdGF7TmFtZX0gICAgICAgPSAkUm93WzFdOwogICAgICAgICRTZXJ2aWNlRGF0YXtWYWxpZElEfSAgICA9ICRSb3dbMl07CiAgICAgICAgJFNlcnZpY2VEYXRhe0NvbW1lbnR9ICAgID0gJFJvd1szXSB8fCAnJzsKICAgICAgICAkU2VydmljZURhdGF7Q3JlYXRlVGltZX0gPSAkUm93WzRdOwogICAgICAgICRTZXJ2aWNlRGF0YXtDcmVhdGVCeX0gICA9ICRSb3dbNV07CiAgICAgICAgJFNlcnZpY2VEYXRhe0NoYW5nZVRpbWV9ID0gJFJvd1s2XTsKICAgICAgICAkU2VydmljZURhdGF7Q2hhbmdlQnl9ICAgPSAkUm93WzddOwojIFJvdGhlciBPU1MgLyBJVFNNQ29yZQogICAgICAgICRTZXJ2aWNlRGF0YXtUeXBlSUR9ICAgICAgPSAkUm93WzhdOwogICAgICAgICRTZXJ2aWNlRGF0YXtDcml0aWNhbGl0eX0gPSAkUm93WzldIHx8ICcnOwojIEVPIElUU01Db3JlCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgJFNlcnZpY2VEYXRhe0Rlc3RRdWV1ZUlEfSAgICAgID0gJFJvd1sxMF07CiAgICAgICAgJFNlcnZpY2VEYXRhe0tleXdvcmRzfSAgICAgICAgID0gJFJvd1sxMV07CiMgRU8gU2VydmljZUNhdGFsb2cKICAgIH0KCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAjIGdldCBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBkYXRhCiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGRlc2NyaXB0aW9uX3Nob3J0LCBkZXNjcmlwdGlvbl9sb25nLCBjb250ZW50X3R5cGUsIGxhbmd1YWdlCiAgICAgICAgICAgIEZST00gc2VydmljZV9kZXNjcmlwdGlvbgogICAgICAgICAgICBXSEVSRSBzZXJ2aWNlX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkU2VydmljZURhdGF7U2VydmljZUlEfSBdLAogICAgKTsKCiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKCiAgICAgICAgIyBhZGQgdG8gZGVzY3JpcHRpb25zIGhhc2ggd2l0aCB0aGUgbGFuZ3VhZ2UgYXMga2V5CiAgICAgICAgJFNlcnZpY2VEYXRhe0Rlc2NyaXB0aW9uc30tPnsgJFJvd1szXSB9ID0gewogICAgICAgICAgICBEZXNjcmlwdGlvblNob3J0ID0+ICRSb3dbMF0sCiAgICAgICAgICAgIERlc2NyaXB0aW9uTG9uZyAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICA9PiAkUm93WzJdLAogICAgICAgIH07CiAgICB9CgogICAgIyBHZXQgYWxsIGxpbmtlZCB0aWNrZXQgdHlwZSBJRHMuCiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+CiAgICAgICAgICAgICdTRUxFQ1QgdGlja2V0X3R5cGVfaWQgRlJPTSBzZXJ2aWNlX3R5cGUgV0hFUkUgc2VydmljZV9pZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtTZXJ2aWNlSUR9IF0sCiAgICApOwoKICAgIG15IEBUaWNrZXRUeXBlSURzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBAVGlja2V0VHlwZUlEcywgJFJvd1swXTsKICAgIH0KICAgICRTZXJ2aWNlRGF0YXtUaWNrZXRUeXBlSURzfSA9IFxAVGlja2V0VHlwZUlEczsKIyBFTyBTZXJ2aWNlQ2F0YWxvZwoKICAgICMgY2hlY2sgc2VydmljZQogICAgaWYgKCAhJFNlcnZpY2VEYXRhe1NlcnZpY2VJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIFNlcnZpY2VJRCAoJFBhcmFte1NlcnZpY2VJRH0pISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjcmVhdGUgc2hvcnQgbmFtZSBhbmQgcGFyZW50IGlkCiAgICAkU2VydmljZURhdGF7TmFtZVNob3J0fSA9ICRTZXJ2aWNlRGF0YXtOYW1lfTsKICAgIGlmICggJFNlcnZpY2VEYXRhe05hbWV9ID1+IG17IFxBICguKikgOjogKC4rPykgXHogfXhtcyApIHsKICAgICAgICAkU2VydmljZURhdGF7TmFtZVNob3J0fSA9ICQyOwoKICAgICAgICAjIGxvb2t1cCBwYXJlbnQKICAgICAgICBteSAkU2VydmljZUlEID0gJFNlbGYtPlNlcnZpY2VMb29rdXAoCiAgICAgICAgICAgIE5hbWUgPT4gJDEsCiAgICAgICAgKTsKICAgICAgICAkU2VydmljZURhdGF7UGFyZW50SUR9ID0gJFNlcnZpY2VJRDsKICAgIH0KCiAgICAjIGdldCBzZXJ2aWNlIHByZWZlcmVuY2VzCiAgICBteSAlUHJlZmVyZW5jZXMgPSAkU2VsZi0+U2VydmljZVByZWZlcmVuY2VzR2V0KAogICAgICAgIFNlcnZpY2VJRCA9PiAkUGFyYW17U2VydmljZUlEfSwKICAgICk7CgogICAgIyBtZXJnZSBoYXNoCiAgICBpZiAoJVByZWZlcmVuY2VzKSB7CiAgICAgICAgJVNlcnZpY2VEYXRhID0gKCAlU2VydmljZURhdGEsICVQcmVmZXJlbmNlcyApOwogICAgfQojIFJvdGhlciBPU1MgLyBJVFNNQ29yZQogICAgaWYgKCAkUGFyYW17SW5jaWRlbnRTdGF0ZX0gKSB7CiAgICAgICAgIyBnZXQgY3VycmVudCBpbmNpZGVudCBzdGF0ZSwgY2FsY3VsYXRlZCBmcm9tIHJlbGF0ZWQgY29uZmlnIGl0ZW1zIGFuZCBjaGlsZCBzZXJ2aWNlcwogICAgICAgICVTZXJ2aWNlRGF0YSA9ICRTZWxmLT5fU2VydmljZUdldEN1cnJlbnRJbmNpZGVudFN0YXRlKAogICAgICAgICAgICBTZXJ2aWNlRGF0YSA9PiBcJVNlcnZpY2VEYXRhLAogICAgICAgICAgICBQcmVmZXJlbmNlcyA9PiBcJVByZWZlcmVuY2VzLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgfQojIEVPIElUU01Db3JlCgogICAgIyBzZXQgY2FjaGUKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICBWYWx1ZSA9PiBcJVNlcnZpY2VEYXRhLAogICAgKTsKCiAgICByZXR1cm4gJVNlcnZpY2VEYXRhOwp9Cgo9aGVhZDIgU2VydmljZUxvb2t1cCgpCgpyZXR1cm4gYSBzZXJ2aWNlIG5hbWUgYW5kIGlkCgogICAgbXkgJFNlcnZpY2VOYW1lID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VMb29rdXAoCiAgICAgICAgU2VydmljZUlEID0+IDEyMywKICAgICk7CgogICAgb3IKCiAgICBteSAkU2VydmljZUlEID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VMb29rdXAoCiAgICAgICAgTmFtZSA9PiAnU2VydmljZTo6U3ViU2VydmljZScsCiAgICApOwoKPWN1dAoKc3ViIFNlcnZpY2VMb29rdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1NlcnZpY2VJRH0gJiYgISRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgU2VydmljZUlEIG9yIE5hbWUhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtTZXJ2aWNlSUR9ICkgewoKICAgICAgICAjIGNoZWNrIGNhY2hlCiAgICAgICAgbXkgJENhY2hlS2V5ID0gJ0NhY2hlOjpTZXJ2aWNlTG9va3VwOjpJRDo6JyAuICRQYXJhbXtTZXJ2aWNlSUR9OwogICAgICAgIG15ICRDYWNoZSAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5HZXQoCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkQ2FjaGUgaWYgZGVmaW5lZCAkQ2FjaGU7CgogICAgICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICAgICAjIGxvb2t1cAogICAgICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMICAgPT4gJ1NFTEVDVCBuYW1lIEZST00gc2VydmljZSBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17U2VydmljZUlEfSBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CgogICAgICAgIG15ICRSZXN1bHQgPSAnJzsKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgJFJlc3VsdCA9ICRSb3dbMF07CiAgICAgICAgfQoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+U2V0KAogICAgICAgICAgICBUeXBlICA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgICAgIFZhbHVlID0+ICRSZXN1bHQsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRSZXN1bHQ7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBjaGVjayBjYWNoZQogICAgICAgIG15ICRDYWNoZUtleSA9ICdDYWNoZTo6U2VydmljZUxvb2t1cDo6TmFtZTo6JyAuICRQYXJhbXtOYW1lfTsKICAgICAgICBteSAkQ2FjaGUgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+R2V0KAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJENhY2hlIGlmIGRlZmluZWQgJENhY2hlOwoKICAgICAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBsb29rdXAKICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgaWQgRlJPTSBzZXJ2aWNlIFdIRVJFIG5hbWUgPSA/JywKICAgICAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte05hbWV9IF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFJlc3VsdCA9ICcnOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAkUmVzdWx0ID0gJFJvd1swXTsKICAgICAgICB9CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICAgICAgVmFsdWUgPT4gJFJlc3VsdCwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJFJlc3VsdDsKICAgIH0KfQoKPWhlYWQyIFNlcnZpY2VBZGQoKQoKYWRkIGEgc2VydmljZQoKICAgIG15ICRTZXJ2aWNlSUQgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUFkZCgKICAgICAgICBOYW1lICAgICA9PiAnU2VydmljZSBOYW1lJywKICAgICAgICBQYXJlbnRJRCA9PiAxLCAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICBDb21tZW50ICA9PiAnQ29tbWVudCcsICAgICMgKG9wdGlvbmFsKQogICAgICAgIFVzZXJJRCAgID0+IDEsCiMgUm90aGVyIE9TUyAvIElUU01Db3JlCiAgICAgICAgVHlwZUlEICAgICAgPT4gMiwKICAgICAgICBDcml0aWNhbGl0eSA9PiAnMyBub3JtYWwnLAojIEVPIElUU01Db3JlCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgRGVzY3JpcHRpb25zID0+IHsKICAgICAgICAgICAgZW4gPT4gewogICAgICAgICAgICAgICAgRGVzY3JpcHRpb25TaG9ydCAgPT4gJ1NlcnZpY2UgQScsCiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbkxvbmcgICA9PiAnVGhpcyBpcyBTZXJ2aWNlIEEuJywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBkZSA9PiB7CiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvblNob3J0ICA9PiAnU2VydmljZSBBJywKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uTG9uZyAgID0+ICdEYXMgaXN0IFNlcnZpY2UgQS4nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBUaWNrZXRUeXBlSURzICAgID0+IFsgMSwgMiwgMyBdLAogICAgICAgIEtleXdvcmRzICAgICAgICAgPT4gJ3NlcnZpY2UgaGludHMgZm9yIGZpbHRlcicsCiMgRU8gU2VydmljZUNhdGFsb2cKICAgICk7Cgo9Y3V0CgpzdWIgU2VydmljZUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiMjIFJvdGhlciBPU1MgLyBJVFNNQ29yZQojIyAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhOYW1lIFZhbGlkSUQgVXNlcklEKSkgewojICAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhOYW1lIFZhbGlkSUQgVXNlcklEIFR5cGVJRCBDcml0aWNhbGl0eSkpIHsKIyMgRU8gSVRTTUNvcmUKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE5hbWUgVmFsaWRJRCBVc2VySUQgRGVzY3JpcHRpb25zIENyaXRpY2FsaXR5KSkgewojIEVPIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGNvbW1lbnQKICAgICRQYXJhbXtDb21tZW50fSB8fD0gJyc7CgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgJFBhcmFte0Rlc3RRdWV1ZUlEfSB8fD0gJyc7CiMgRU8gU2VydmljZUNhdGFsb2cKCiAgICAjIGNsZWFudXAgZ2l2ZW4gcGFyYW1zCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhOYW1lIENvbW1lbnQpKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNoZWNrSXRlbScpLT5TdHJpbmdDbGVhbigKICAgICAgICAgICAgU3RyaW5nUmVmICAgICAgICAgPT4gXCRQYXJhbXskQXJndW1lbnR9LAogICAgICAgICAgICBSZW1vdmVBbGxOZXdsaW5lcyA9PiAxLAogICAgICAgICAgICBSZW1vdmVBbGxUYWJzICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBzZXJ2aWNlIG5hbWUKICAgIGlmICggJFBhcmFte05hbWV9ID1+IG17IDo6IH14bXMgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBhZGQgc2VydmljZSEgSW52YWxpZCBTZXJ2aWNlIG5hbWUgJyRQYXJhbXtOYW1lfSchIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAjIGNoZWNrIHNlcnZpY2UgZGVzY3JpcHRpb25zIHBhcmFtZXRlcgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtEZXNjcmlwdGlvbnN9ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFNlcnZpY2UgZGVzY3JpcHRpb25zISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBlYWNoIGFyZ3VtZW50IGZvciBlYWNoIHNlcnZpY2UgZGVzY3JpcHRpb25zIGxhbmd1YWdlCiAgICBmb3IgbXkgJExhbmd1YWdlICggc29ydCBrZXlzICV7ICRQYXJhbXtEZXNjcmlwdGlvbnN9IH0gKSB7CgogICAgICAgIGZvciBteSAkQXJndW1lbnQgKHF3KERlc2NyaXB0aW9uU2hvcnQgQ29udGVudFR5cGUpKSB7CgogICAgICAgICAgICAjIGVycm9yIGlmIG1lc3NhZ2UgZGF0YSBpcyBpbmNvbXBsZXRlCiAgICAgICAgICAgIGlmICggISRQYXJhbXtEZXNjcmlwdGlvbnN9LT57JExhbmd1YWdlfS0+eyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIHNlcnZpY2UgZGVzY3JpcHRpb24gYXJndW1lbnQgJyRBcmd1bWVudCcgZm9yIGxhbmd1YWdlICckTGFuZ3VhZ2UnISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGZpeCBzb21lIGJhZCBzdHVmZiBmcm9tIHNvbWUgYnJvd3NlcnMgKE9wZXJhKSEKICAgICAgICAgICAgJFBhcmFte0Rlc2NyaXB0aW9uc30tPnskTGFuZ3VhZ2V9LT57RGVzY3JpcHRpb25Mb25nfSB8fD0gJyc7CiAgICAgICAgICAgICRQYXJhbXtEZXNjcmlwdGlvbnN9LT57JExhbmd1YWdlfS0+e0Rlc2NyaXB0aW9uTG9uZ30gPX4gcy8oXG5ccnxcclxyXG58XHJcbnxccikvXG4vZzsKICAgICAgICB9CiAgICB9CiMgRU8gU2VydmljZUNhdGFsb2cKCiAgICAjIGNyZWF0ZSBmdWxsIG5hbWUKICAgICRQYXJhbXtGdWxsTmFtZX0gPSAkUGFyYW17TmFtZX07CgogICAgIyBnZXQgcGFyZW50IG5hbWUKICAgIGlmICggJFBhcmFte1BhcmVudElEfSApIHsKICAgICAgICBteSAkUGFyZW50TmFtZSA9ICRTZWxmLT5TZXJ2aWNlTG9va3VwKAogICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJFBhcmFte1BhcmVudElEfSwKICAgICAgICApOwogICAgICAgIGlmICgkUGFyZW50TmFtZSkgewogICAgICAgICAgICAkUGFyYW17RnVsbE5hbWV9ID0gJFBhcmVudE5hbWUgLiAnOjonIC4gJFBhcmFte05hbWV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZmluZCBleGlzdGluZyBzZXJ2aWNlCiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJ1NFTEVDVCBpZCBGUk9NIHNlcnZpY2UgV0hFUkUgbmFtZSA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtGdWxsTmFtZX0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAkRXhpc3RzOwogICAgd2hpbGUgKCAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRXhpc3RzID0gMTsKICAgIH0KCiAgICAjIGFkZCBzZXJ2aWNlIHRvIGRhdGFiYXNlCiAgICBpZiAoJEV4aXN0cykgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQSBzZXJ2aWNlIHdpdGggdGhlIG5hbWUgYW5kIHBhcmVudCAnJFBhcmFte0Z1bGxOYW1lfScgYWxyZWFkeSBleGlzdHMuIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiMjIFJvdGhlciBPU1MgLyBJVFNNQ29yZQojIyAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBzZXJ2aWNlICcKIyMgICAgICAgICAgICAuICcobmFtZSwgdmFsaWRfaWQsIGNvbW1lbnRzLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5KSAnCiMjICAgICAgICAgICAgLiAnVkFMVUVTICg/LCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKIyMgICAgICAgIEJpbmQgPT4gWwojIyAgICAgICAgICAgIFwkUGFyYW17RnVsbE5hbWV9LCBcJFBhcmFte1ZhbGlkSUR9LCBcJFBhcmFte0NvbW1lbnR9LAojIyAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtVc2VySUR9LAojIyAgICAgICAgXSwKIyAgICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gc2VydmljZSAnCiMgICAgICAgICAgICAgLiAnKG5hbWUsIHZhbGlkX2lkLCBjb21tZW50cywgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSwgY2hhbmdlX3RpbWUsIGNoYW5nZV9ieSwgJwojICAgICAgICAgICAgIC4gJ3R5cGVfaWQsIGNyaXRpY2FsaXR5KSAnCiMgICAgICAgICAgICAgLiAnVkFMVUVTICg/LCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPywgY3VycmVudF90aW1lc3RhbXAsID8sID8sID8pJywKIyAgICAgICAgIEJpbmQgPT4gWwojICAgICAgICAgICAgIFwkUGFyYW17RnVsbE5hbWV9LCBcJFBhcmFte1ZhbGlkSUR9LCBcJFBhcmFte0NvbW1lbnR9LAojICAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1R5cGVJRH0sIFwkUGFyYW17Q3JpdGljYWxpdHl9LAojICAgICAgICAgXSwKIyMgRU8gSVRTTUNvcmUKICAgICAgICBTUUwgPT4gJ0lOU0VSVCBJTlRPIHNlcnZpY2UgJwogICAgICAgICAgICAuICcobmFtZSwgdmFsaWRfaWQsIGNvbW1lbnRzLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5LCAnCiAgICAgICAgICAgIC4gJ3R5cGVfaWQsIGNyaXRpY2FsaXR5LCBkZXN0X3F1ZXVlaWQsIGtleXdvcmRzKSAnCiAgICAgICAgICAgIC4gJ1ZBTFVFUyAoPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCA/LCA/LCA/LCA/KScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17RnVsbE5hbWV9LCBcJFBhcmFte1ZhbGlkSUR9LCBcJFBhcmFte0NvbW1lbnR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtUeXBlSUR9LCBcJFBhcmFte0NyaXRpY2FsaXR5fSwKICAgICAgICAgICAgXCRQYXJhbXtEZXN0UXVldWVJRH0sIFwkUGFyYW17S2V5d29yZHN9LAogICAgICAgIF0sCiMgRU8gU2VydmljZUNhdGFsb2cKICAgICk7CgogICAgIyBnZXQgc2VydmljZSBpZAogICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgaWQgRlJPTSBzZXJ2aWNlIFdIRVJFIG5hbWUgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17RnVsbE5hbWV9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CiAgICBteSAkU2VydmljZUlEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFNlcnZpY2VJRCA9ICRSb3dbMF07CiAgICB9CgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgIyBJbnNlcnQgbmV3IHRpY2tldCB0eXBlIHJlbGF0aW9ucy4KICAgIFRJQ0tFVFRZUEVJRDoKICAgIGZvciBteSAkVGlja2V0VHlwZUlEICggQHsgJFBhcmFte1RpY2tldFR5cGVJRHN9IH0gKSB7CiAgICAgICAgbmV4dCBUSUNLRVRUWVBFSUQgaWYgISRUaWNrZXRUeXBlSUQ7CgogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBzZXJ2aWNlX3R5cGUgJwogICAgICAgICAgICAgICAgLiAnKHNlcnZpY2VfaWQsIHRpY2tldF90eXBlX2lkLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5KSAnCiAgICAgICAgICAgICAgICAuICdWQUxVRVMgKD8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFNlcnZpY2VJRCwgXCRUaWNrZXRUeXBlSUQsIFwkUGFyYW17VXNlcklEfSBdCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGluc2VydCBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBkYXRhCiAgICBmb3IgbXkgJExhbmd1YWdlICggc29ydCBrZXlzICV7ICRQYXJhbXtEZXNjcmlwdGlvbnN9IH0gKSB7CgogICAgICAgIG15ICVEZXNjcmlwdGlvbiA9ICV7ICRQYXJhbXtEZXNjcmlwdGlvbnN9LT57JExhbmd1YWdlfSB9OwoKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBJTlNFUlQgSU5UTyBzZXJ2aWNlX2Rlc2NyaXB0aW9uCiAgICAgICAgICAgICAgICAgICAgKHNlcnZpY2VfaWQsIGRlc2NyaXB0aW9uX3Nob3J0LCBkZXNjcmlwdGlvbl9sb25nLCBjb250ZW50X3R5cGUsIGxhbmd1YWdlKQogICAgICAgICAgICAgICAgVkFMVUVTICg/LCA/LCA/LCA/LCA/KScsCiAgICAgICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICAgICAgXCRTZXJ2aWNlSUQsCiAgICAgICAgICAgICAgICBcJERlc2NyaXB0aW9ue0Rlc2NyaXB0aW9uU2hvcnR9LAogICAgICAgICAgICAgICAgXCREZXNjcmlwdGlvbntEZXNjcmlwdGlvbkxvbmd9LAogICAgICAgICAgICAgICAgXCREZXNjcmlwdGlvbntDb250ZW50VHlwZX0sCiAgICAgICAgICAgICAgICBcJExhbmd1YWdlLAogICAgICAgICAgICBdLAogICAgICAgICk7CiAgICB9CiMgRU8gU2VydmljZUNhdGFsb2cKCiAgICAjIHJlc2V0IGNhY2hlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICk7CgogICAgbXkgJVNlcnZpY2VzID0gJFNlbGYtPlNlcnZpY2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBnZW5lcmF0ZSBjaGFpbmVkIHRyYW5zbGF0aW9ucyBhdXRvbWF0aWNhbGx5CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHJhbnNsYXRpb25zJyktPlRyYW5zbGF0ZVBhcmVudENoaWxkRWxlbWVudHMoCiAgICAgICAgU3RyaW5ncyA9PiBbIHZhbHVlcyAlU2VydmljZXMgXSwKICAgICk7CgogICAgcmV0dXJuICRTZXJ2aWNlSUQ7Cn0KCj1oZWFkMiBTZXJ2aWNlVXBkYXRlKCkKCnVwZGF0ZSBhbiBleGlzdGluZyBzZXJ2aWNlCgogICAgbXkgJFRydWUgPSAkU2VydmljZU9iamVjdC0+U2VydmljZVVwZGF0ZSgKICAgICAgICBTZXJ2aWNlSUQgPT4gMTIzLAogICAgICAgIFBhcmVudElEICA9PiAxLCAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgTmFtZSAgICAgID0+ICdTZXJ2aWNlIE5hbWUnLAogICAgICAgIFZhbGlkSUQgICA9PiAxLAogICAgICAgIENvbW1lbnQgICA9PiAnQ29tbWVudCcsICAgICMgKG9wdGlvbmFsKQogICAgICAgIFVzZXJJRCAgICA9PiAxLAojIFJvdGhlciBPU1MgLyBJVFNNQ29yZQogICAgICAgIFR5cGVJRCAgICAgID0+IDIsCiAgICAgICAgQ3JpdGljYWxpdHkgPT4gJzMgbm9ybWFsJywKIyBFTyBJVFNNQ29yZQojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgIERlc2NyaXB0aW9ucyA9PiB7CiAgICAgICAgICAgIGVuID0+IHsKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uU2hvcnQgID0+ICdTZXJ2aWNlIEEnLAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb25Mb25nICAgPT4gJ1RoaXMgaXMgU2VydmljZSBBLicsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGUgPT4gewogICAgICAgICAgICAgICAgRGVzY3JpcHRpb25TaG9ydCAgPT4gJ1NlcnZpY2UgQScsCiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbkxvbmcgICA9PiAnRGFzIGlzdCBTZXJ2aWNlIEEuJywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgVGlja2V0VHlwZUlEcyAgICA9PiBbIDEsIDIsIDMgXSwKICAgICAgICBLZXl3b3JkICAgICAgICAgID0+ICdzZXJ2aWNlIGhpbnRzIGZvciBmaWx0ZXInLAojIEVPIFNlcnZpY2VDYXRhbG9nCiAgICApOwoKPWN1dAoKc3ViIFNlcnZpY2VVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwojIyBSb3RoZXIgT1NTIC8gSVRTTUNvcmUKIyMgICAgZm9yIG15ICRBcmd1bWVudCAocXcoU2VydmljZUlEIE5hbWUgVmFsaWRJRCBVc2VySUQpKSB7CiMgICAgZm9yIG15ICRBcmd1bWVudCAocXcoU2VydmljZUlEIE5hbWUgVmFsaWRJRCBVc2VySUQgVHlwZUlEIENyaXRpY2FsaXR5KSkgewojIyBFTyBJVFNNQ29yZQogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU2VydmljZUlEIE5hbWUgRGVzY3JpcHRpb25zIFZhbGlkSUQgVXNlcklEIENyaXRpY2FsaXR5KSkgewojIEVPIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgY29tbWVudAogICAgJFBhcmFte0NvbW1lbnR9IHx8PSAnJzsKCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAkUGFyYW17RGVzdFF1ZXVlSUR9IHx8PSAnJzsKIyBFTyBTZXJ2aWNlQ2F0YWxvZwoKICAgICMgY2xlYW51cCBnaXZlbiBwYXJhbXMKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE5hbWUgQ29tbWVudCkpIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2hlY2tJdGVtJyktPlN0cmluZ0NsZWFuKAogICAgICAgICAgICBTdHJpbmdSZWYgICAgICAgICA9PiBcJFBhcmFteyRBcmd1bWVudH0sCiAgICAgICAgICAgIFJlbW92ZUFsbE5ld2xpbmVzID0+IDEsCiAgICAgICAgICAgIFJlbW92ZUFsbFRhYnMgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIHNlcnZpY2UgbmFtZQogICAgaWYgKCAkUGFyYW17TmFtZX0gPX4gbXsgOjogfXhtcyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IHVwZGF0ZSBzZXJ2aWNlISBJbnZhbGlkIFNlcnZpY2UgbmFtZSAnJFBhcmFte05hbWV9JyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IG9sZCBuYW1lIG9mIHNlcnZpY2UKICAgIG15ICRPbGRTZXJ2aWNlTmFtZSA9ICRTZWxmLT5TZXJ2aWNlTG9va3VwKAogICAgICAgIFNlcnZpY2VJRCA9PiAkUGFyYW17U2VydmljZUlEfSwKICAgICk7CgogICAgaWYgKCAhJE9sZFNlcnZpY2VOYW1lICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgdXBkYXRlIHNlcnZpY2UhIFNlcnZpY2UgJyRQYXJhbXtTZXJ2aWNlSUR9JyBkb2VzIG5vdCBleGlzdC4iLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgICMgY2hlY2sgc2VydmljZSBkZXNjcmlwdGlvbnMgcGFyYW1ldGVyCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0Rlc2NyaXB0aW9uc30gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgU2VydmljZSBkZXNjcmlwdGlvbnMhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIGVhY2ggYXJndW1lbnQgZm9yIGVhY2ggc2VydmljZSBkZXNjcmlwdGlvbnMgbGFuZ3VhZ2UKICAgIGZvciBteSAkTGFuZ3VhZ2UgKCBzb3J0IGtleXMgJXsgJFBhcmFte0Rlc2NyaXB0aW9uc30gfSApIHsKCiAgICAgICAgZm9yIG15ICRBcmd1bWVudCAocXcoRGVzY3JpcHRpb25TaG9ydCBDb250ZW50VHlwZSkpIHsKCiAgICAgICAgICAgICMgZXJyb3IgaWYgbWVzc2FnZSBkYXRhIGlzIGluY29tcGxldGUKICAgICAgICAgICAgaWYgKCAhJFBhcmFte0Rlc2NyaXB0aW9uc30tPnskTGFuZ3VhZ2V9LT57JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgc2VydmljZSBkZXNjcmlwdGlvbiBhcmd1bWVudCAnJEFyZ3VtZW50JyBmb3IgbGFuZ3VhZ2UgJyRMYW5ndWFnZSchIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZml4IHNvbWUgYmFkIHN0dWZmIGZyb20gc29tZSBicm93c2VycyAoT3BlcmEpIQogICAgICAgICAgICAkUGFyYW17RGVzY3JpcHRpb25zfS0+eyRMYW5ndWFnZX0tPntEZXNjcmlwdGlvbkxvbmd9IHx8PSAnJzsKICAgICAgICAgICAgJFBhcmFte0Rlc2NyaXB0aW9uc30tPnskTGFuZ3VhZ2V9LT57RGVzY3JpcHRpb25Mb25nfSA9fiBzLyhcblxyfFxyXHJcbnxcclxufFxyKS9cbi9nOwogICAgICAgIH0KICAgIH0KIyBFTyBTZXJ2aWNlQ2F0YWxvZwoKICAgICMgY3JlYXRlIGZ1bGwgbmFtZQogICAgJFBhcmFte0Z1bGxOYW1lfSA9ICRQYXJhbXtOYW1lfTsKCiAgICAjIGdldCBwYXJlbnQgbmFtZQogICAgaWYgKCAkUGFyYW17UGFyZW50SUR9ICkgewoKICAgICAgICAjIGxvb2t1cCBzZXJ2aWNlCiAgICAgICAgbXkgJFBhcmVudE5hbWUgPSAkU2VsZi0+U2VydmljZUxvb2t1cCgKICAgICAgICAgICAgU2VydmljZUlEID0+ICRQYXJhbXtQYXJlbnRJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRQYXJlbnROYW1lKSB7CiAgICAgICAgICAgICRQYXJhbXtGdWxsTmFtZX0gPSAkUGFyZW50TmFtZSAuICc6OicgLiAkUGFyYW17TmFtZX07CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrLCBpZiBzZWxlY3RlZCBwYXJlbnQgd2FzIGEgY2hpbGQgb2YgdGhpcyBzZXJ2aWNlCiAgICAgICAgaWYgKCAkUGFyYW17RnVsbE5hbWV9ID1+IG17IFxBICggXFEkT2xkU2VydmljZU5hbWVcRSApIDo6IH14bXMgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdDYW5cJ3QgdXBkYXRlIHNlcnZpY2UhIEludmFsaWQgcGFyZW50IHdhcyBzZWxlY3RlZC4nCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGZpbmQgZXhpc3RzIHNlcnZpY2UKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAnU0VMRUNUIGlkIEZST00gc2VydmljZSBXSEVSRSBuYW1lID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0Z1bGxOYW1lfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwogICAgbXkgJEV4aXN0czsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIGlmICggJFBhcmFte1NlcnZpY2VJRH0gbmUgJFJvd1swXSApIHsKICAgICAgICAgICAgJEV4aXN0cyA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgdXBkYXRlIHNlcnZpY2UKICAgIGlmICgkRXhpc3RzKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJBIHNlcnZpY2Ugd2l0aCB0aGUgbmFtZSBhbmQgcGFyZW50ICckUGFyYW17RnVsbE5hbWV9JyBhbHJlYWR5IGV4aXN0cy4iLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwoKICAgIH0KCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAjIERlbGV0ZSBleGlzdGluZyB0aWNrZXQgdHlwZSByZWxhdGlvbnMuCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gc2VydmljZV90eXBlIFdIRVJFIHNlcnZpY2VfaWQgPSA/OycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U2VydmljZUlEfSwgXSwKICAgICk7CiMgRU8gU2VydmljZUNhdGFsb2cKCiAgICAjIHVwZGF0ZSBzZXJ2aWNlCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiMjIFJvdGhlciBPU1MgLyBJVFNNQ29yZQojIyAgICAgICAgU1FMID0+ICdVUERBVEUgc2VydmljZSBTRVQgbmFtZSA9ID8sIHZhbGlkX2lkID0gPywgY29tbWVudHMgPSA/LCAnCiMjICAgICAgICAgICAgLiAnIGNoYW5nZV90aW1lID0gY3VycmVudF90aW1lc3RhbXAsIGNoYW5nZV9ieSA9ID8gV0hFUkUgaWQgPSA/JywKIyMgICAgICAgIEJpbmQgPT4gWwojIyAgICAgICAgICAgIFwkUGFyYW17RnVsbE5hbWV9LCBcJFBhcmFte1ZhbGlkSUR9LCBcJFBhcmFte0NvbW1lbnR9LAojIyAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtTZXJ2aWNlSUR9LAojIyAgICAgICAgXSwKIyAgICAgICAgU1FMID0+ICdVUERBVEUgc2VydmljZSBTRVQgbmFtZSA9ID8sIHZhbGlkX2lkID0gPywgY29tbWVudHMgPSA/LCAnCiMgICAgICAgICAgICAuICcgY2hhbmdlX3RpbWUgPSBjdXJyZW50X3RpbWVzdGFtcCwgY2hhbmdlX2J5ID0gPywgdHlwZV9pZCA9ID8sIGNyaXRpY2FsaXR5ID0gPycKIyAgICAgICAgICAgIC4gJyBXSEVSRSBpZCA9ID8nLAojICAgICAgICBCaW5kID0+IFsKIyAgICAgICAgICAgIFwkUGFyYW17RnVsbE5hbWV9LCBcJFBhcmFte1ZhbGlkSUR9LCBcJFBhcmFte0NvbW1lbnR9LAojICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1R5cGVJRH0sIFwkUGFyYW17Q3JpdGljYWxpdHl9LCBcJFBhcmFte1NlcnZpY2VJRH0sCiMgICAgICAgIF0sCiMjIEVPIElUU01Db3JlCiAgICAgICAgU1FMID0+ICdVUERBVEUgc2VydmljZSBTRVQgbmFtZSA9ID8sIHZhbGlkX2lkID0gPywgY29tbWVudHMgPSA/LCAnCiAgICAgICAgICAgIC4gJyBjaGFuZ2VfdGltZSA9IGN1cnJlbnRfdGltZXN0YW1wLCBjaGFuZ2VfYnkgPSA/LCBjcml0aWNhbGl0eSA9ID8sICcKICAgICAgICAgICAgLiAnIGRlc3RfcXVldWVpZCA9ID8sIGtleXdvcmRzID0gPycKICAgICAgICAgICAgLiAnIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17RnVsbE5hbWV9LCBcJFBhcmFte1ZhbGlkSUR9LCBcJFBhcmFte0NvbW1lbnR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17Q3JpdGljYWxpdHl9LAogICAgICAgICAgICBcJFBhcmFte0Rlc3RRdWV1ZUlEfSwgXCRQYXJhbXtLZXl3b3Jkc30sIFwkUGFyYW17U2VydmljZUlEfSwKICAgICAgICBdLAojIEVPIFNlcnZpY2VDYXRhbG9nCiAgICApOwoKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgICMgSW5zZXJ0IG5ldyB0aWNrZXQgdHlwZSByZWxhdGlvbnMuCiAgICBUSUNLRVRUWVBFSUQ6CiAgICBmb3IgbXkgJFRpY2tldFR5cGVJRCAoIEB7ICRQYXJhbXtUaWNrZXRUeXBlSURzfSB9ICkgewogICAgICAgIG5leHQgVElDS0VUVFlQRUlEIGlmICEkVGlja2V0VHlwZUlEOwogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBzZXJ2aWNlX3R5cGUgJwogICAgICAgICAgICAgICAgLiAnKHNlcnZpY2VfaWQsIHRpY2tldF90eXBlX2lkLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5KSAnCiAgICAgICAgICAgICAgICAuICdWQUxVRVMgKD8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1NlcnZpY2VJRH0sIFwkVGlja2V0VHlwZUlELCBcJFBhcmFte1VzZXJJRH0gXQogICAgICAgICk7CiAgICB9CiMgRU8gU2VydmljZUNhdGFsb2cKCiAgICBteSAkTGlrZVNlcnZpY2UgPSAkREJPYmplY3QtPlF1b3RlKCAkT2xkU2VydmljZU5hbWUsICdMaWtlJyApIC4gJzo6JSc7CgogICAgIyBmaW5kIGFsbCBjaGlsZHJlbgogICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgPT4gIlNFTEVDVCBpZCwgbmFtZSBGUk9NIHNlcnZpY2UgV0hFUkUgbmFtZSBMSUtFID8iLAogICAgICAgIEJpbmQgPT4gWyBcJExpa2VTZXJ2aWNlIF0sCiAgICApOwoKICAgIG15IEBDaGlsZHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBteSAlQ2hpbGQ7CiAgICAgICAgJENoaWxke1NlcnZpY2VJRH0gPSAkUm93WzBdOwogICAgICAgICRDaGlsZHtOYW1lfSAgICAgID0gJFJvd1sxXTsKICAgICAgICBwdXNoIEBDaGlsZHMsIFwlQ2hpbGQ7CiAgICB9CgogICAgIyB1cGRhdGUgY2hpbGRyZW4KICAgIGZvciBteSAkQ2hpbGQgKEBDaGlsZHMpIHsKICAgICAgICAkQ2hpbGQtPntOYW1lfSA9fiBzeyBcQSAoIFxRJE9sZFNlcnZpY2VOYW1lXEUgKSA6OiB9eyRQYXJhbXtGdWxsTmFtZX06On14bXM7CiAgICAgICAgJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAnVVBEQVRFIHNlcnZpY2UgU0VUIG5hbWUgPSA/IFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJENoaWxkLT57TmFtZX0sIFwkQ2hpbGQtPntTZXJ2aWNlSUR9IF0sCiAgICAgICAgKTsKICAgIH0KCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAjIERlbGV0ZSBleGlzdGluZyBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBkYXRhLgogICAgJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBzZXJ2aWNlX2Rlc2NyaXB0aW9uIFdIRVJFIHNlcnZpY2VfaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtTZXJ2aWNlSUR9IF0sCiAgICApOwoKICAgICMgSW5zZXJ0IG5ldyBzZXJ2aWNlIGRlc2NyaXB0aW9ucyBkYXRhLgogICAgZm9yIG15ICRMYW5ndWFnZSAoIHNvcnQga2V5cyAleyAkUGFyYW17RGVzY3JpcHRpb25zfSAvLyB7fSB9ICkgewoKICAgICAgICBteSAlRGVzY3JpcHRpb25zID0gJXsgJFBhcmFte0Rlc2NyaXB0aW9uc30tPnskTGFuZ3VhZ2V9IH07CgogICAgICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBJTlNFUlQgSU5UTyBzZXJ2aWNlX2Rlc2NyaXB0aW9uCiAgICAgICAgICAgICAgICAgICAgKHNlcnZpY2VfaWQsIGRlc2NyaXB0aW9uX3Nob3J0LCBkZXNjcmlwdGlvbl9sb25nLCBjb250ZW50X3R5cGUsIGxhbmd1YWdlKQogICAgICAgICAgICAgICAgVkFMVUVTICg/LCA/LCA/LCA/LCA/KScsCiAgICAgICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICAgICAgXCRQYXJhbXtTZXJ2aWNlSUR9LAogICAgICAgICAgICAgICAgXCREZXNjcmlwdGlvbnN7RGVzY3JpcHRpb25TaG9ydH0sCiAgICAgICAgICAgICAgICBcJERlc2NyaXB0aW9uc3tEZXNjcmlwdGlvbkxvbmd9LAogICAgICAgICAgICAgICAgXCREZXNjcmlwdGlvbnN7Q29udGVudFR5cGV9LAogICAgICAgICAgICAgICAgXCRMYW5ndWFnZSwKICAgICAgICAgICAgXSwKICAgICAgICApOwogICAgfQojIEVPIFNlcnZpY2VDYXRhbG9nCgogICAgIyByZXNldCBjYWNoZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoCiAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICApOwoKICAgIG15ICVTZXJ2aWNlcyA9ICRTZWxmLT5TZXJ2aWNlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2VuZXJhdGUgY2hhaW5lZCB0cmFuc2xhdGlvbnMgYXV0b21hdGljYWxseQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRyYW5zbGF0aW9ucycpLT5UcmFuc2xhdGVQYXJlbnRDaGlsZEVsZW1lbnRzKAogICAgICAgIFN0cmluZ3MgPT4gWyB2YWx1ZXMgJVNlcnZpY2VzIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgU2VydmljZVNlYXJjaCgpCgpyZXR1cm4gc2VydmljZSBpZHMgYXMgYW4gYXJyYXkKCiAgICBteSBAU2VydmljZUxpc3QgPSAkU2VydmljZU9iamVjdC0+U2VydmljZVNlYXJjaCgKICAgICAgICBOYW1lICAgPT4gJ1NlcnZpY2UgTmFtZScsICMgKG9wdGlvbmFsKQogICAgICAgIExpbWl0ICA9PiAxMjIsICAgICAgICAgICAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMTAwMAogICAgICAgIFVzZXJJRCA9PiAxLAojIFJvdGhlciBPU1MgLyBJVFNNQ29yZQogICAgICAgIFR5cGVJRHMgICAgICAgPT4gMiwKICAgICAgICBDcml0aWNhbGl0aWVzID0+IFsgJzIgbG93JywgJzMgbm9ybWFsJyBdLAojIEVPIElUU01Db3JlCiAgICApOwoKPWN1dAoKc3ViIFNlcnZpY2VTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFVzZXJJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgbGltaXQKICAgICRQYXJhbXtMaW1pdH0gfHw9IDEwMDA7CgogICAgIyBjcmVhdGUgc3FsIHF1ZXJ5CiAgICBteSAkU1FMID0gIlNFTEVDVCBpZCBGUk9NIHNlcnZpY2UgV0hFUkUgdmFsaWRfaWQgSU4gKCAke1woam9pbiAnLCAnLCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRJRHNHZXQoKSl9ICkiOwogICAgbXkgQEJpbmQ7CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICBpZiAoICRQYXJhbXtOYW1lfSApIHsKCiAgICAgICAgIyBxdW90ZQogICAgICAgICRQYXJhbXtOYW1lfSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtOYW1lfSwgJ0xpa2UnICk7CgogICAgICAgICMgcmVwbGFjZSAqIHdpdGggJSBhbmQgY2xlYW4gdGhlIHN0cmluZwogICAgICAgICRQYXJhbXtOYW1lfSA9fiBzeyBcKisgfXslfXhtc2c7CiAgICAgICAgJFBhcmFte05hbWV9ID1+IHN7ICUrIH17JX14bXNnOwogICAgICAgIG15ICRMaWtlU3RyaW5nID0gJyUnIC4gJFBhcmFte05hbWV9IC4gJyUnOwogICAgICAgIHB1c2ggQEJpbmQsIFwkTGlrZVN0cmluZzsKCiAgICAgICAgJFNRTCAuPSAiIEFORCBuYW1lIExJS0UgPyI7CiAgICB9CiMgUm90aGVyIE9TUyAvIElUU01Db3JlCiAgICAjIGFkZCB0eXBlIGlkcwogICAgaWYgKCAkUGFyYW17VHlwZUlEc30gJiYgcmVmICRQYXJhbXtUeXBlSURzfSBlcSAnQVJSQVknICYmIEB7ICRQYXJhbXtUeXBlSURzfSB9ICkgewoKICAgICAgICAjIHF1b3RlIGFzIGludGVnZXIKICAgICAgICBmb3IgbXkgJFR5cGVJRCAoIEB7ICRQYXJhbXtUeXBlSURzfSB9ICkgewogICAgICAgICAgICAkVHlwZUlEID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkVHlwZUlELCAnSW50ZWdlcicgKTsKICAgICAgICB9CgogICAgICAgICRTUUwgLj0gIiBBTkQgdHlwZV9pZCBJTiAoIiAuIGpvaW4oJywgJywgQHsgJFBhcmFte1R5cGVJRHN9IH0pIC4gIikgIjsKICAgIH0KCiAgICAjIGFkZCBjcml0aWNhbGl0aWVzCiAgICBpZiAoJFBhcmFte0NyaXRpY2FsaXRpZXN9ICYmIHJlZiAkUGFyYW17Q3JpdGljYWxpdGllc30gZXEgJ0FSUkFZJyAmJiBAeyAkUGFyYW17Q3JpdGljYWxpdGllc30gfSApIHsKCiAgICAgICAgIyBxdW90ZSBhbmQgd3JhcCBpbiBzaW5nbGUgcXVvdGVzCiAgICAgICAgZm9yIG15ICRDcml0aWNhbGl0eSAoIEB7ICRQYXJhbXtDcml0aWNhbGl0aWVzfSB9ICkgewogICAgICAgICAgICAkQ3JpdGljYWxpdHkgPSAiJyIgLiAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRDcml0aWNhbGl0eSApIC4gIiciOwogICAgICAgIH0KCiAgICAgICAgJFNRTCAuPSAiQU5EIGNyaXRpY2FsaXR5IElOICgiIC4gam9pbignLCAnLCBAeyAkUGFyYW17Q3JpdGljYWxpdGllc30gfSkgLiAiKSAiOwogICAgfQojIEVPIElUU01Db3JlCgogICAgJFNRTCAuPSAnIE9SREVSIEJZIG5hbWUnOwoKICAgICMgc2VhcmNoIHNlcnZpY2UgaW4gZGIKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgID0+ICRTUUwsCiAgICAgICAgQmluZCA9PiBcQEJpbmQsCiAgICApOwoKICAgIG15IEBTZXJ2aWNlTGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQFNlcnZpY2VMaXN0LCAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBAU2VydmljZUxpc3Q7Cn0KCj1oZWFkMiBDdXN0b21lclVzZXJTZXJ2aWNlTWVtYmVyTGlzdCgpCgpyZXR1cm5zIGEgbGlzdCBvZiBjdXN0b21lcnVzZXIvc2VydmljZSBtZW1iZXJzCgogICAgU2VydmljZUlEOiBzZXJ2aWNlIGlkCiAgICBDdXN0b21lclVzZXJMb2dpbjogY3VzdG9tZXIgdXNlciBsb2dpbgogICAgRGVmYXVsdFNlcnZpY2VzOiBhY3RpdmF0ZSBvciBkZWFjdGl2YXRlIGRlZmF1bHQgc2VydmljZXMKCiAgICBSZXN1bHQ6IEhBU0ggLT4gcmV0dXJucyBhIGhhc2ggb2Yga2V5ID0+IHNlcnZpY2UgaWQsIHZhbHVlID0+IHNlcnZpY2UgbmFtZQogICAgICAgICAgICBOYW1lIC0+IHJldHVybnMgYW4gYXJyYXkgb2YgdXNlciBuYW1lcwogICAgICAgICAgICBJRCAgIC0+IHJldHVybnMgYW4gYXJyYXkgb2YgdXNlciBpZHMKCiAgICBFeGFtcGxlIChnZXQgc2VydmljZXMgb2YgY3VzdG9tZXIgdXNlcik6CgogICAgJFNlcnZpY2VPYmplY3QtPkN1c3RvbWVyVXNlclNlcnZpY2VNZW1iZXJMaXN0KAogICAgICAgIEN1c3RvbWVyVXNlckxvZ2luID0+ICdUZXN0JywKICAgICAgICBSZXN1bHQgICAgICAgICAgICA9PiAnSEFTSCcsCiAgICAgICAgRGVmYXVsdFNlcnZpY2VzICAgPT4gMCwKICAgICk7CgogICAgRXhhbXBsZSAoZ2V0IGN1c3RvbWVyIHVzZXIgb2Ygc2VydmljZSk6CgogICAgJFNlcnZpY2VPYmplY3QtPkN1c3RvbWVyVXNlclNlcnZpY2VNZW1iZXJMaXN0KAogICAgICAgIFNlcnZpY2VJRCA9PiAkSUQsCiAgICAgICAgUmVzdWx0ICAgID0+ICdIQVNIJywKICAgICk7Cgo9Y3V0CgpzdWIgQ3VzdG9tZXJVc2VyU2VydmljZU1lbWJlckxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1Jlc3VsdH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFJlc3VsdCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgKG9ubHkgMSBvciAwIGlzIGFsbG93ZWQgdG8gY29ycmVjdGx5IHNldCB0aGUgY2FjaGUga2V5KQogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17RGVmYXVsdFNlcnZpY2VzfSB8fCAkUGFyYW17RGVmYXVsdFNlcnZpY2VzfSApIHsKICAgICAgICAkUGFyYW17RGVmYXVsdFNlcnZpY2VzfSA9IDE7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkUGFyYW17RGVmYXVsdFNlcnZpY2VzfSA9IDA7CiAgICB9CgogICAgIyBnZXQgb3B0aW9ucyBmb3IgZGVmYXVsdCBzZXJ2aWNlcyBmb3IgdW5rbm93biBjdXN0b21lcnMKICAgIG15ICREZWZhdWx0U2VydmljZVVua25vd25DdXN0b21lciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVGlja2V0OjpTZXJ2aWNlOjpEZWZhdWx0OjpVbmtub3duQ3VzdG9tZXInKTsKICAgIGlmICgKICAgICAgICAkRGVmYXVsdFNlcnZpY2VVbmtub3duQ3VzdG9tZXIKICAgICAgICAmJiAkUGFyYW17RGVmYXVsdFNlcnZpY2VzfQogICAgICAgICYmICEkUGFyYW17U2VydmljZUlEfQogICAgICAgICYmICEkUGFyYW17Q3VzdG9tZXJVc2VyTG9naW59CiAgICAgICAgKQogICAgewogICAgICAgICRQYXJhbXtDdXN0b21lclVzZXJMb2dpbn0gPSAnPERFRkFVTFQ+JzsKICAgIH0KCiAgICAjIGNoZWNrIG1vcmUgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17U2VydmljZUlEfSAmJiAhJFBhcmFte0N1c3RvbWVyVXNlckxvZ2lufSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgU2VydmljZUlEIG9yIEN1c3RvbWVyVXNlckxvZ2luIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjcmVhdGUgY2FjaGUga2V5CiAgICBteSAkQ2FjaGVLZXkgPSAnQ3VzdG9tZXJVc2VyU2VydmljZU1lbWJlckxpc3Q6OicgLiAkUGFyYW17UmVzdWx0fSAuICc6OicKICAgICAgICAuICdEZWZhdWx0U2VydmljZXM6OicgLiAkUGFyYW17RGVmYXVsdFNlcnZpY2VzfSAuICc6Oic7CiAgICBpZiAoICRQYXJhbXtTZXJ2aWNlSUR9ICkgewogICAgICAgICRDYWNoZUtleSAuPSAnU2VydmljZUlEOjonIC4gJFBhcmFte1NlcnZpY2VJRH07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtDdXN0b21lclVzZXJMb2dpbn0gKSB7CiAgICAgICAgJENhY2hlS2V5IC49ICdDdXN0b21lclVzZXJMb2dpbjo6JyAuICRQYXJhbXtDdXN0b21lclVzZXJMb2dpbn07CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkdldCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CiAgICBpZiAoICRQYXJhbXtSZXN1bHR9IGVxICdIQVNIJyApIHsKICAgICAgICByZXR1cm4gJXskQ2FjaGV9IGlmIHJlZiAkQ2FjaGUgZXEgJ0hBU0gnOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuIEB7JENhY2hlfSBpZiByZWYgJENhY2hlIGVxICdBUlJBWSc7CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGRiIHF1b3RlCiAgICBmb3IgKCBzb3J0IGtleXMgJVBhcmFtICkgewogICAgICAgICRQYXJhbXskX30gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17JF99ICk7CiAgICB9CiAgICBmb3IgKHF3KFNlcnZpY2VJRCkpIHsKICAgICAgICAkUGFyYW17JF99ID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFteyRffSwgJ0ludGVnZXInICk7CiAgICB9CgogICAgIyBzcWwKICAgIG15ICVEYXRhOwogICAgbXkgQERhdGE7CiAgICBteSAkU1FMID0gJ1NFTEVDVCBzY3Uuc2VydmljZV9pZCwgc2N1LmN1c3RvbWVyX3VzZXJfbG9naW4sIHMubmFtZSAnCiAgICAgICAgLiAnIEZST00gJwogICAgICAgIC4gJyBzZXJ2aWNlX2N1c3RvbWVyX3VzZXIgc2N1LCBzZXJ2aWNlIHMnCiAgICAgICAgLiAnIFdIRVJFICcKICAgICAgICAuICIgcy52YWxpZF9pZCBJTiAoICR7XChqb2luICcsICcsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZElEc0dldCgpKX0gKSBBTkQgIgogICAgICAgIC4gJyBzLmlkID0gc2N1LnNlcnZpY2VfaWQgQU5EICc7CgogICAgaWYgKCAkUGFyYW17U2VydmljZUlEfSApIHsKICAgICAgICAkU1FMIC49ICIgc2N1LnNlcnZpY2VfaWQgPSAkUGFyYW17U2VydmljZUlEfSI7CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtDdXN0b21lclVzZXJMb2dpbn0gKSB7CiAgICAgICAgJFNRTCAuPSAiIHNjdS5jdXN0b21lcl91c2VyX2xvZ2luID0gJyRQYXJhbXtDdXN0b21lclVzZXJMb2dpbn0nIjsKICAgIH0KCiAgICAkREJPYmplY3QtPlByZXBhcmUoIFNRTCA9PiAkU1FMICk7CgogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgIG15ICRWYWx1ZSA9ICcnOwogICAgICAgIGlmICggJFBhcmFte1NlcnZpY2VJRH0gKSB7CiAgICAgICAgICAgICREYXRheyAkUm93WzFdIH0gPSAkUm93WzBdOwogICAgICAgICAgICAkVmFsdWUgPSAkUm93WzBdOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJERhdGF7ICRSb3dbMF0gfSA9ICRSb3dbMl07CiAgICAgICAgfQogICAgfQogICAgaWYgKAogICAgICAgICRQYXJhbXtDdXN0b21lclVzZXJMb2dpbn0KICAgICAgICAmJiAkUGFyYW17Q3VzdG9tZXJVc2VyTG9naW59IG5lICc8REVGQVVMVD4nCiAgICAgICAgJiYgJFBhcmFte0RlZmF1bHRTZXJ2aWNlc30KICAgICAgICAmJiAha2V5cyglRGF0YSkKICAgICAgICApCiAgICB7CiAgICAgICAgJURhdGEgPSAkU2VsZi0+Q3VzdG9tZXJVc2VyU2VydmljZU1lbWJlckxpc3QoCiAgICAgICAgICAgIEN1c3RvbWVyVXNlckxvZ2luID0+ICc8REVGQVVMVD4nLAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICA9PiAnSEFTSCcsCiAgICAgICAgICAgIERlZmF1bHRTZXJ2aWNlcyAgID0+IDAsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJldHVybiByZXN1bHQKICAgIGlmICggJFBhcmFte1Jlc3VsdH0gZXEgJ0hBU0gnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICAgICAgVmFsdWUgPT4gXCVEYXRhLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICVEYXRhOwogICAgfQogICAgaWYgKCAkUGFyYW17UmVzdWx0fSBlcSAnTmFtZScgKSB7CiAgICAgICAgQERhdGEgPSB2YWx1ZXMgJURhdGE7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBARGF0YSA9IGtleXMgJURhdGE7CiAgICB9CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+U2V0KAogICAgICAgIFR5cGUgID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gXEBEYXRhLAogICAgKTsKICAgIHJldHVybiBARGF0YTsKfQoKPWhlYWQyIEN1c3RvbWVyVXNlclNlcnZpY2VNZW1iZXJBZGQoKQoKdG8gYWRkIGEgbWVtYmVyIHRvIGEgc2VydmljZQoKaWYgJ0FjdGl2ZScgaXMgMCwgdGhlIGN1c3RvbWVyIGlzIHJlbW92ZWQgZnJvbSB0aGUgc2VydmljZQoKICAgICRTZXJ2aWNlT2JqZWN0LT5DdXN0b21lclVzZXJTZXJ2aWNlTWVtYmVyQWRkKAogICAgICAgIEN1c3RvbWVyVXNlckxvZ2luID0+ICdUZXN0MScsCiAgICAgICAgU2VydmljZUlEICAgICAgICAgPT4gNiwKICAgICAgICBBY3RpdmUgICAgICAgICAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgQ3VzdG9tZXJVc2VyU2VydmljZU1lbWJlckFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDdXN0b21lclVzZXJMb2dpbiBTZXJ2aWNlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZGVsZXRlIGV4aXN0aW5nIHJlbGF0aW9uCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gc2VydmljZV9jdXN0b21lcl91c2VyIFdIRVJFIGN1c3RvbWVyX3VzZXJfbG9naW4gPSA/IEFORCBzZXJ2aWNlX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q3VzdG9tZXJVc2VyTG9naW59LCBcJFBhcmFte1NlcnZpY2VJRH0gXSwKICAgICk7CgogICAgIyByZXR1cm4gaWYgcmVsYXRpb24gaXMgbm90IGFjdGl2ZQogICAgaWYgKCAhJFBhcmFte0FjdGl2ZX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgaW5zZXJ0IG5ldyByZWxhdGlvbgogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gc2VydmljZV9jdXN0b21lcl91c2VyICcKICAgICAgICAgICAgLiAnKGN1c3RvbWVyX3VzZXJfbG9naW4sIHNlcnZpY2VfaWQsIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnkpICcKICAgICAgICAgICAgLiAnVkFMVUVTICg/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0N1c3RvbWVyVXNlckxvZ2lufSwgXCRQYXJhbXtTZXJ2aWNlSUR9LCBcJFBhcmFte1VzZXJJRH0gXQogICAgKTsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICk7CgogICAgcmV0dXJuICRTdWNjZXNzOwp9Cgo9aGVhZDIgU2VydmljZVByZWZlcmVuY2VzU2V0KCkKCnNldCBzZXJ2aWNlIHByZWZlcmVuY2VzCgogICAgJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VQcmVmZXJlbmNlc1NldCgKICAgICAgICBTZXJ2aWNlSUQgPT4gMTIzLAogICAgICAgIEtleSAgICAgICA9PiAnVXNlckNvbW1lbnQnLAogICAgICAgIFZhbHVlICAgICA9PiAnc29tZSBjb21tZW50JywKICAgICAgICBVc2VySUQgICAgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBTZXJ2aWNlUHJlZmVyZW5jZXNTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+e1ByZWZlcmVuY2VzT2JqZWN0fS0+U2VydmljZVByZWZlcmVuY2VzU2V0KCVQYXJhbSk7CgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoCiAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICApOwogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBTZXJ2aWNlUHJlZmVyZW5jZXNHZXQoKQoKZ2V0IHNlcnZpY2UgcHJlZmVyZW5jZXMKCiAgICBteSAlUHJlZmVyZW5jZXMgPSAkU2VydmljZU9iamVjdC0+U2VydmljZVByZWZlcmVuY2VzR2V0KAogICAgICAgIFNlcnZpY2VJRCA9PiAxMjMsCiAgICAgICAgVXNlcklEICAgID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgU2VydmljZVByZWZlcmVuY2VzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT57UHJlZmVyZW5jZXNPYmplY3R9LT5TZXJ2aWNlUHJlZmVyZW5jZXNHZXQoJVBhcmFtKTsKfQoKPWhlYWQyIFNlcnZpY2VQYXJlbnRzR2V0KCkKCnJldHVybiBhbiBvcmRlcmVkIGxpc3QgYWxsIHBhcmVudCBzZXJ2aWNlIElEcyBmb3IgdGhlIGdpdmVuIHNlcnZpY2UgZnJvbSB0aGUgcm9vdCBwYXJlbnQgdG8gdGhlCmN1cnJlbnQgc2VydmljZSBwYXJlbnQKCiAgICBteSAkU2VydmljZVBhcmVudHNMaXN0ID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VQYXJlbnRzR2V0KAogICAgICAgIFNlcnZpY2VJRCA9PiAxMjMsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKICAgIHJldHVybnMKCiAgICAkU2VydmljZVBhcmVudHNMaXN0ID0gWyAxLCAyLCAuLi5dOwoKPWN1dAoKc3ViIFNlcnZpY2VQYXJlbnRzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhVc2VySUQgU2VydmljZUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgJE5lZWRlZCEnLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgcmVhZCBjYWNoZQogICAgbXkgJENhY2hlS2V5ID0gJ1NlcnZpY2VQYXJlbnRzR2V0OjonIC4gJFBhcmFte1NlcnZpY2VJRH07CiAgICBteSAkQ2FjaGUgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+R2V0KAogICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKICAgIHJldHVybiAkQ2FjaGUgaWYgcmVmICRDYWNoZTsKCiAgICAjIGdldCB0aGUgbGlzdCBvZiBzZXJ2aWNlcwogICAgbXkgJFNlcnZpY2VMaXN0ID0gJFNlbGYtPlNlcnZpY2VMaXN0R2V0KAogICAgICAgIFZhbGlkICA9PiAwLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAjIGdldCBhIHNlcnZpY2UgbG9va3VwIHRhYmxlCiAgICBteSAlU2VydmljZUxvb2t1cDsKICAgIFNFUlZJQ0U6CiAgICBmb3IgbXkgJFNlcnZpY2VEYXRhICggQHskU2VydmljZUxpc3R9ICkgewogICAgICAgIG5leHQgU0VSVklDRSBpZiAhJFNlcnZpY2VEYXRhOwogICAgICAgIG5leHQgU0VSVklDRSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJFNlcnZpY2VEYXRhKTsKICAgICAgICBuZXh0IFNFUlZJQ0UgaWYgISRTZXJ2aWNlRGF0YS0+e1NlcnZpY2VJRH07CgogICAgICAgICRTZXJ2aWNlTG9va3VweyAkU2VydmljZURhdGEtPntTZXJ2aWNlSUR9IH0gPSAkU2VydmljZURhdGE7CiAgICB9CgogICAgIyBleGl0IGlmIFNlcnZpY2VJRCBpcyBpbnZhbGlkCiAgICByZXR1cm4gaWYgISRTZXJ2aWNlTG9va3VweyAkUGFyYW17U2VydmljZUlEfSB9OwoKICAgICMgdG8gc3RvcmUgdGhlIHJldHVybiBzdHJ1Y3R1cmUKICAgIG15IEBTZXJ2aWNlUGFyZW50czsKCiAgICAjIGdldCB0aGUgU2VydmljZVBhcmVudElEIGZyb20gdGhlIHJlcXVlc3RlZCBzZXJ2aWNlCiAgICBteSAkU2VydmljZVBhcmVudElEID0gJFNlcnZpY2VMb29rdXB7ICRQYXJhbXtTZXJ2aWNlSUR9IH0tPntQYXJlbnRJRH07CgogICAgIyBnZXQgYWxsIHBhcmVudHMgZm9yIHRoZSByZXF1ZXN0ZWQgc2VydmljZQogICAgd2hpbGUgKCRTZXJ2aWNlUGFyZW50SUQpIHsKCiAgICAgICAgIyBhZGQgc2VydmljZSBwYXJlbnQgSUQgdG8gdGhlIHJldHVybiBzdHJ1Y3R1cmUKICAgICAgICBwdXNoIEBTZXJ2aWNlUGFyZW50cywgJFNlcnZpY2VQYXJlbnRJRDsKCiAgICAgICAgIyBzZXQgbmV4dCBTZXJ2aWNlUGFyZW50SUQgKHRoZSBwYXJlbnQgb2YgdGhlIGN1cnJlbnQgcGFyZW50KQogICAgICAgICRTZXJ2aWNlUGFyZW50SUQgPSAkU2VydmljZUxvb2t1cHskU2VydmljZVBhcmVudElEfS0+e1BhcmVudElEfSB8fCAwOwoKICAgIH0KCiAgICAjIHJldmVyc2UgdGhlIHJldHVybiBhcnJheSB0byBnZXQgdGhlIGxpc3Qgb3JkZXJlZCBmcm9tIG9sZCB0byB5b3VuZyAoaW4gcGFyZW50IGNvbnRleHQpCiAgICBteSBARGF0YSA9IHJldmVyc2UgQFNlcnZpY2VQYXJlbnRzOwoKICAgICMgc2V0IGNhY2hlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+U2V0KAogICAgICAgIFR5cGUgID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gXEBEYXRhLAogICAgKTsKCiAgICByZXR1cm4gXEBEYXRhOwp9Cgo9aGVhZDIgR2V0QWxsQ3VzdG9tU2VydmljZXMoKQoKZ2V0IGFsbCBjdXN0b20gc2VydmljZXMgb2Ygb25lIHVzZXIKCiAgICBteSBAU2VydmljZXMgPSAkU2VydmljZU9iamVjdC0+R2V0QWxsQ3VzdG9tU2VydmljZXMoIFVzZXJJRCA9PiAxMjMgKTsKCj1jdXQKCnN1YiBHZXRBbGxDdXN0b21TZXJ2aWNlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlS2V5ID0gJ0dldEFsbEN1c3RvbVNlcnZpY2VzOjonIC4gJFBhcmFte1VzZXJJRH07CiAgICBteSAkQ2FjaGUgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+R2V0KAogICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKCiAgICByZXR1cm4gQHskQ2FjaGV9IGlmICRDYWNoZTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgc2VhcmNoIGFsbCBjdXN0b20gc2VydmljZXMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBzZXJ2aWNlX2lkCiAgICAgICAgICAgIEZST00gcGVyc29uYWxfc2VydmljZXMKICAgICAgICAgICAgV0hFUkUgdXNlcl9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1VzZXJJRH0gXSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSBAU2VydmljZUlEczsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQFNlcnZpY2VJRHMsICRSb3dbMF07CiAgICB9CgogICAgIyBzZXQgY2FjaGUKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICBWYWx1ZSA9PiBcQFNlcnZpY2VJRHMsCiAgICApOwoKICAgIHJldHVybiBAU2VydmljZUlEczsKfQoKc3ViIEV4cG9ydFNlcnZpY2VzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFVzZXJJRCA9ICRTZWxmLT57VXNlcklEfSB8fCAkUGFyYW17VXNlcklEfTsKCiAgICBteSAlU2VydmljZUZpbHRlcjsKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17U2VydmljZXN9ICkgKSB7CiAgICAgICAgJVNlcnZpY2VGaWx0ZXIgPSBtYXAgeyAkXyA9PiAxIH0gJFBhcmFte1NlcnZpY2VzfS0+QCo7CiAgICB9CgogICAgbXkgJVNlcnZpY2VMaXN0ID0gJFNlbGYtPlNlcnZpY2VMaXN0KAogICAgICAgIFZhbGlkICA9PiAwLAogICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgKTsKCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiMgIyBSb3RoZXIgT1NTIC8gSVRTTUNvcmUKIyAgICAgbXkgJFR5cGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAojICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OlNlcnZpY2U6OlR5cGUnLAojICAgICApOwojICMgRU8gSVRTTUNvcmUKIyBFTyBTZXJ2aWNlQ2F0YWxvZwoKICAgIG15ICVFeHBvcnREYXRhOwogICAgU0VSVklDRUlEOgogICAgZm9yIG15ICRTZXJ2aWNlSUQgKCBzb3J0IGtleXMgJVNlcnZpY2VMaXN0ICkgewoKICAgICAgICBteSAlU2VydmljZURhdGEgPSAkU2VsZi0+U2VydmljZUdldCgKICAgICAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkVXNlcklELAogICAgICAgICk7CgogICAgICAgIGlmICglU2VydmljZUZpbHRlcikgewogICAgICAgICAgICBuZXh0IFNFUlZJQ0VJRCB1bmxlc3MgJFNlcnZpY2VGaWx0ZXJ7ICRTZXJ2aWNlRGF0YXtOYW1lfSB9OwogICAgICAgIH0KCiAgICAgICAgIyB0cmFuc2xhdGUgSURzIGludG8gbmFtZXMgb3IgbmFtZS1saWtlIGlkZW50aWZpZXJzCiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgbXkgJFF1ZXVlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyk7CiAgICAgICAgbXkgJFR5cGVPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKTsKIyBFTyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgIG15ICRWYWxpZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwoKICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBrZXlzICVTZXJ2aWNlRGF0YSApIHsKCiAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIHVubGVzcyAkQXR0cmlidXRlID1+IC9JRC87CgogICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGUgZXEgJ1BhcmVudElEJyApIHsKICAgICAgICAgICAgICAgIG15ICRQYXJlbnRTZXJ2aWNlID0gJFNlbGYtPlNlcnZpY2VMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNlRGF0YXtQYXJlbnRJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFNlcnZpY2VEYXRhe1BhcmVudH0gPSAkUGFyZW50U2VydmljZTsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkU2VydmljZURhdGF7UGFyZW50SUR9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnVmFsaWRJRCcgKSB7CiAgICAgICAgICAgICAgICBteSAkVmFsaWQgPSAkVmFsaWRPYmplY3QtPlZhbGlkTG9va3VwKAogICAgICAgICAgICAgICAgICAgIFZhbGlkSUQgPT4gJFNlcnZpY2VEYXRhe1ZhbGlkSUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZXJ2aWNlRGF0YXtWYWxpZH0gPSAkVmFsaWQ7CiAgICAgICAgICAgICAgICBkZWxldGUgJFNlcnZpY2VEYXRhe1ZhbGlkSUR9OwogICAgICAgICAgICB9CiMgUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiMgIyBSb3RoZXIgT1NTIC8gSVRTTUNvcmUKIyAgICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ1R5cGVJRCcgJiYgSXNIYXNoUmVmV2l0aERhdGEoJFR5cGVMaXN0KSApIHsKIyAgICAgICAgICAgICAgICAgbXkgJFR5cGUgPSAkVHlwZUxpc3QtPnskU2VydmljZURhdGF7VHlwZUlEfX07CiMgICAgICAgICAgICAgICAgICRTZXJ2aWNlRGF0YXtUeXBlfSA9ICRUeXBlOwojICAgICAgICAgICAgICAgICBkZWxldGUgJFNlcnZpY2VEYXRhe1R5cGVJRH07CiMgICAgICAgICAgICAgfQojICMgRU8gSVRTTUNvcmUKICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdEZXN0UXVldWVJRCcgKSB7CiAgICAgICAgICAgICAgICBteSAkUXVldWUgPSAkUXVldWVPYmplY3QtPlF1ZXVlTG9va3VwKAogICAgICAgICAgICAgICAgICAgIFF1ZXVlSUQgPT4gJFNlcnZpY2VEYXRhe0Rlc3RRdWV1ZUlEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkU2VydmljZURhdGF7RGVzdFF1ZXVlfSA9ICRRdWV1ZTsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkU2VydmljZURhdGF7RGVzdFF1ZXVlSUR9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnVGlja2V0VHlwZUlEcycgKSB7CiAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFNlcnZpY2VEYXRhe1RpY2tldFR5cGVJRHN9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQFRpY2tldFR5cGVzOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkVGlja2V0VHlwZUlEICggJFNlcnZpY2VEYXRhe1RpY2tldFR5cGVJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAVGlja2V0VHlwZXMsICRUeXBlT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUlEID0+ICRUaWNrZXRUeXBlSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRTZXJ2aWNlRGF0YXtUaWNrZXRUeXBlc30gPSBcQFRpY2tldFR5cGVzOwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkU2VydmljZURhdGF7VGlja2V0VHlwZUlEc307CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KIyBFTyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgIH0KCiAgICAgICAgZGVsZXRlICRTZXJ2aWNlRGF0YXtDaGFuZ2VCeX07CiAgICAgICAgZGVsZXRlICRTZXJ2aWNlRGF0YXtDaGFuZ2VUaW1lfTsKICAgICAgICBkZWxldGUgJFNlcnZpY2VEYXRhe0NyZWF0ZUJ5fTsKICAgICAgICBkZWxldGUgJFNlcnZpY2VEYXRhe0NyZWF0ZVRpbWV9OwogICAgICAgIGRlbGV0ZSAkU2VydmljZURhdGF7U2VydmljZUlEfTsKCiAgICAgICAgJEV4cG9ydERhdGF7ICRTZXJ2aWNlRGF0YXtOYW1lfSB9ID0gXCVTZXJ2aWNlRGF0YTsKICAgIH0KCiAgICByZXR1cm4gXCVFeHBvcnREYXRhOwp9CgpzdWIgSW1wb3J0U2VydmljZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVXNlcklEID0gJFNlbGYtPntVc2VySUR9IHx8ICRQYXJhbXtVc2VySUR9OwoKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgIG15ICRRdWV1ZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpOwogICAgbXkgJFR5cGVPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpOwojIEVPIFNlcnZpY2VDYXRhbG9nCiAgICBteSAkVmFsaWRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKTsKICAgIG15ICVTZXJ2aWNlTGlzdCA9ICRTZWxmLT5TZXJ2aWNlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMCwKICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICk7CiAgICBteSAlU2VydmljZUxvb2t1cCA9IHJldmVyc2UgJVNlcnZpY2VMaXN0OwoKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKIyAjIFJvdGhlciBPU1MgLyBJVFNNQ29yZQojICAgICBteSAkVHlwZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiMgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6U2VydmljZTo6VHlwZScsCiMgICAgICk7CiMKIyAgICAgbXkgJVR5cGVMb29rdXAgPSBJc0hhc2hSZWZXaXRoRGF0YSgkVHlwZUxpc3QpID8gcmV2ZXJzZSAkVHlwZUxpc3QtPiUqIDogKCk7CiMgIyBFTyBJVFNNQ29yZQojIEVPIFNlcnZpY2VDYXRhbG9nCgogICAgIyBzb3J0IHNlcnZpY2VzIGJ5IHBhcmVudCBhdHRyaWJ1dGUKICAgIG15IEBGaXJzdExldmVsU2VydmljZXM7CiAgICBteSBAQ2hpbGRTZXJ2aWNlczsKICAgIGZvciBteSAkU2VydmljZU5hbWUgKCBrZXlzICRQYXJhbXtTZXJ2aWNlc30tPiUqICkgewogICAgICAgIGlmICggJFBhcmFte1NlcnZpY2VzfXskU2VydmljZU5hbWV9e1BhcmVudH0gKSB7CiAgICAgICAgICAgIHB1c2ggQENoaWxkU2VydmljZXMsICRTZXJ2aWNlTmFtZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHB1c2ggQEZpcnN0TGV2ZWxTZXJ2aWNlcywgJFNlcnZpY2VOYW1lOwogICAgICAgIH0KICAgIH0KICAgIG15IEBDaGlsZFNlcnZpY2VzU29ydGVkID0gc29ydCB7CiAgICAgICAgaWYgKCAoICRQYXJhbXtTZXJ2aWNlc317JGF9e1BhcmVudH0gLy8gJycgKSBlcSAkUGFyYW17U2VydmljZXN9eyRifXtOYW1lfSApIHsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggKCAkUGFyYW17U2VydmljZXN9eyRifXtQYXJlbnR9IC8vICcnICkgZXEgJFBhcmFte1NlcnZpY2VzfXskYX17TmFtZX0gKSB7CiAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0gQENoaWxkU2VydmljZXM7CgogICAgU0VSVklDRU5BTUU6CiAgICBmb3IgbXkgJFNlcnZpY2VOYW1lICggQEZpcnN0TGV2ZWxTZXJ2aWNlcywgQENoaWxkU2VydmljZXNTb3J0ZWQgKSB7CiAgICAgICAgbXkgJFNlcnZpY2VEYXRhID0gJFBhcmFte1NlcnZpY2VzfXskU2VydmljZU5hbWV9OwoKICAgICAgICAjIHNraXAgaWYgcGFyZW50IGF0dHJpYnV0ZSBwcmVzZW50IGJ1dCBubyBjb3JyZXNwb25kaW5nIHNlcnZpY2UKICAgICAgICBpZiAoICRTZXJ2aWNlRGF0YS0+e1BhcmVudH0gKSB7CiAgICAgICAgICAgIG15ICRQYXJlbnRTZXJ2aWNlSUQgPSAkU2VsZi0+U2VydmljZUxvb2t1cCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFNlcnZpY2VEYXRhLT57UGFyZW50fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgU0VSVklDRU5BTUUgdW5sZXNzICRQYXJlbnRTZXJ2aWNlSUQ7CgogICAgICAgICAgICAkU2VydmljZURhdGEtPntQYXJlbnRJRH0gPSAkUGFyZW50U2VydmljZUlEOwogICAgICAgIH0KCiAgICAgICAgIyBpbiBjYXNlIG9mIGNoaWxkIHNlcnZpY2UsIGNoZWNrIGlmIGFsbCBwYXJlbnQgc2VydmljZXMgYXJlIHByZXNlbnQKICAgICAgICAjICAgZWl0aGVyIGluIHRoZSBzeXN0ZW0gb3IgaW4gdGhlIGltcG9ydCBkYXRhCiAgICAgICAgbXkgQE5hbWVFbGVtZW50cyA9IHNwbGl0KCAvOjovLCAkU2VydmljZURhdGEtPntOYW1lfSApOwogICAgICAgIGlmICggc2NhbGFyIEBOYW1lRWxlbWVudHMgPiAxICkgewogICAgICAgICAgICBteSAkTmFtZVN0cmcgPSAnJzsKICAgICAgICAgICAgZm9yIG15ICRJbmRleCAoIDAgLi4gJCNOYW1lRWxlbWVudHMgLSAxICkgewogICAgICAgICAgICAgICAgaWYgKCROYW1lU3RyZykgewogICAgICAgICAgICAgICAgICAgICROYW1lU3RyZyAuPSAnOjonIC4gJE5hbWVFbGVtZW50c1skSW5kZXhdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJE5hbWVTdHJnIC49ICROYW1lRWxlbWVudHNbJEluZGV4XTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICEkU2VydmljZUxvb2t1cHskTmFtZVN0cmd9ICYmICEkUGFyYW17U2VydmljZXN9eyROYW1lU3RyZ30gKSB7CgogICAgICAgICAgICAgICAgICAgICMgcGFyZW50IGVsZW1lbnQgbm90IGZvdW5kLCBza2lwcGluZwogICAgICAgICAgICAgICAgICAgIG5leHQgU0VSVklDRU5BTUU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRTZXJ2aWNlSUQgPSAkU2VydmljZUxvb2t1cHsgJFNlcnZpY2VEYXRhLT57TmFtZX0gfTsKCiAgICAgICAgIyBza2lwIGlmIHNlcnZpY2Ugd2l0aCBzYW1lIG5hbWUgZXhpc3RzIGFuZCBvdmVyd3JpdGUgaXMgbm90IHNldAogICAgICAgIG5leHQgU0VSVklDRU5BTUUgaWYgKCAhJFBhcmFte092ZXJ3cml0ZUV4aXN0aW5nRW50aXRpZXN9ICYmICRTZXJ2aWNlSUQgKTsKCiAgICAgICAgIyB0cmFuc2xhdGUgbmFtZWQgZGF0YSBiYWNrIHRvIElEcwojIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwojICMgUm90aGVyIE9TUyAvIElUU01Db3JlCiMgICAgICAgICBpZiAoICRTZXJ2aWNlRGF0YS0+e1R5cGV9ICkgewojICAgICAgICAgICAgICRTZXJ2aWNlRGF0YS0+e1R5cGVJRH0gPSAkVHlwZUxvb2t1cHskU2VydmljZURhdGEtPntUeXBlfX07CiMgICAgICAgICB9CiMgIyBFTyBJVFNNQ29yZQogICAgICAgIGlmICggJFNlcnZpY2VEYXRhLT57RGVzdFF1ZXVlfSApIHsKICAgICAgICAgICAgJFNlcnZpY2VEYXRhLT57RGVzdFF1ZXVlSUR9ID0gJFF1ZXVlT2JqZWN0LT5RdWV1ZUxvb2t1cCgKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICRTZXJ2aWNlRGF0YS0+e0Rlc3RRdWV1ZX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU2VydmljZURhdGEtPntUaWNrZXRUeXBlc30gKSApIHsKICAgICAgICAgICAgbXkgQFRpY2tldFR5cGVJRHM7CiAgICAgICAgICAgIGZvciBteSAkVGlja2V0VHlwZSAoICRTZXJ2aWNlRGF0YS0+e1RpY2tldFR5cGVzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBUaWNrZXRUeXBlSURzLCAkVHlwZU9iamVjdC0+VHlwZUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICRUaWNrZXRUeXBlLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkU2VydmljZURhdGEtPntUaWNrZXRUeXBlSURzfSA9IFxAVGlja2V0VHlwZUlEczsKICAgICAgICB9CiMgRU8gU2VydmljZUNhdGFsb2cKICAgICAgICAkU2VydmljZURhdGEtPntWYWxpZElEfSA9ICRWYWxpZE9iamVjdC0+VmFsaWRMb29rdXAoCiAgICAgICAgICAgIFZhbGlkID0+ICRTZXJ2aWNlRGF0YS0+e1ZhbGlkfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJFNlcnZpY2VJRCkgewoKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+U2VydmljZVVwZGF0ZSgKICAgICAgICAgICAgICAgICRTZXJ2aWNlRGF0YS0+JSosCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlcnZpY2VEYXRhLT57TmFtZVNob3J0fSwKICAgICAgICAgICAgICAgIFNlcnZpY2VJRCA9PiAkU2VydmljZUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiB1bmxlc3MgJFN1Y2Nlc3M7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAkU2VydmljZUlEID0gJFNlbGYtPlNlcnZpY2VBZGQoCiAgICAgICAgICAgICAgICAkU2VydmljZURhdGEtPiUqLAogICAgICAgICAgICAgICAgTmFtZSAgID0+ICRTZXJ2aWNlRGF0YS0+e05hbWVTaG9ydH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIHVubGVzcyAkU2VydmljZUlEOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQojIFJvdGhlciBPU1MgLyBJVFNNQ29yZQoKPWhlYWQyIF9TZXJ2aWNlR2V0Q3VycmVudEluY2lkZW50U3RhdGUoKQoKUmV0dXJucyBhIGhhc2ggd2l0aCB0aGUgb3JpZ2luYWwgc2VydmljZSBkYXRhLAplbmhhbmNlZCB3aXRoIGFkZGl0aW9uYWwgc2VydmljZSBkYXRhIGFib3V0IHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlLApiYXNlZCBvbiBjb25maWd1cmF0aW9uIGl0ZW1zIGFuZCBvdGhlciBzZXJ2aWNlcy4KCiAgICAlU2VydmljZURhdGEgPSAkU2VydmljZU9iamVjdC0+X1NlcnZpY2VHZXRDdXJyZW50SW5jaWRlbnRTdGF0ZSgKICAgICAgICBTZXJ2aWNlRGF0YSA9PiBcJVNlcnZpY2VEYXRhLAogICAgICAgIFByZWZlcmVuY2VzID0+IFwlUHJlZmVyZW5jZXMsCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgX1NlcnZpY2VHZXRDdXJyZW50SW5jaWRlbnRTdGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTZXJ2aWNlRGF0YSBQcmVmZXJlbmNlcyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTZXJ2aWNlRGF0YSBQcmVmZXJlbmNlcykpIHsKICAgICAgICBpZiAoIHJlZiAkUGFyYW17JEFyZ3VtZW50fSBuZSAnSEFTSCcgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkQXJndW1lbnQgbXVzdCBiZSBhIGhhc2ggcmVmZXJlbmNlISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBtYWtlIGxvY2FsIGNvcGllcwogICAgbXkgJVNlcnZpY2VEYXRhID0gJXsgJFBhcmFte1NlcnZpY2VEYXRhfSB9OwogICAgbXkgJVByZWZlcmVuY2VzID0gJXsgJFBhcmFte1ByZWZlcmVuY2VzfSB9OwoKICAgICMgZ2V0IHNlcnZpY2UgdHlwZSBsaXN0CiAgICBteSAkU2VydmljZVR5cGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpTZXJ2aWNlOjpUeXBlJywKICAgICk7CiAgICAkU2VydmljZURhdGF7VHlwZX0gPSAkU2VydmljZVR5cGVMaXN0LT57ICRTZXJ2aWNlRGF0YXtUeXBlSUR9IH0gfHwgJyc7CgogICAgIyBzZXQgZGVmYXVsdCBpbmNpZGVudCBzdGF0ZSB0eXBlCiAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlVHlwZX0gPSAnb3BlcmF0aW9uYWwnOwoKICAgICMgZ2V0IElUU00gbW9kdWxlIGRpcmVjdG9yeQogICAgbXkgJENvbmZpZ0l0ZW1Nb2R1bGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKSAuICcvS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS5wbSc7CgogICAgIyBjaGVjayBpZiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQgcGFja2FnZSBpcyBpbnN0YWxsZWQKICAgIGlmICggLWUgJENvbmZpZ0l0ZW1Nb2R1bGUgKSB7CgogICAgICAgICMgY2hlY2sgaWYgYSBwcmVmZXJlbmNlIHNldHRpbmcgZm9yIEN1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzIGV4aXN0cwogICAgICAgIGlmICggJFByZWZlcmVuY2Vze0N1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzfSApIHsKCiAgICAgICAgICAgICMgc2V0IGRlZmF1bHQgaW5jaWRlbnQgc3RhdGUgdHlwZSBmcm9tIHNlcnZpY2UgcHJlZmVyZW5jZXMgJ0N1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzJwogICAgICAgICAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlVHlwZX0gPSAkUHJlZmVyZW5jZXN7Q3VySW5jaVN0YXRlVHlwZUZyb21DSXN9OwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIHByZWZlcmVuY2VzIHNldHRpbmcgZm9yIEN1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIGdldCBpbmNpZGVudCBsaW5rIHR5cGVzIGFuZCBkaXJlY3Rpb25zIGZyb20gY29uZmlnCiAgICAgICAgICAgIG15ICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdJVFNNOjpDb3JlOjpJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uJyk7CgogICAgICAgICAgICAjIHRvIHN0b3JlIGFsbCBsaW5rZWQgY29uZmlnIGl0ZW0gaWRzIG9mIHRoaXMgc2VydmljZSAoZm9yIGFsbCBjb25maWd1cmVkIGxpbmsgdHlwZXMpCiAgICAgICAgICAgIG15ICVBbGxMaW5rZWRDb25maWdJdGVtSURzOwoKICAgICAgICAgICAgTElOS1RZUEU6CiAgICAgICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXsgJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24gfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgZGlyZWN0aW9uCiAgICAgICAgICAgICAgICBteSAkTGlua0RpcmVjdGlvbiA9ICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uLT57JExpbmtUeXBlfTsKCiAgICAgICAgICAgICAgICAjIHJldmVyc2UgdGhlIGxpbmsgZGlyZWN0aW9uLCBhcyB0aGlzIGlzIHRoZSBwZXJzcGVjdGl2ZSBmcm9tIHRoZSBzZXJ2aWNlCiAgICAgICAgICAgICAgICAjIG5vIG5lZWQgdG8gcmV2ZXJzZSBpZiBkaXJlY3Rpb24gaXMgJ0JvdGgnCiAgICAgICAgICAgICAgICBpZiAoICRMaW5rRGlyZWN0aW9uIGVxICdTb3VyY2UnICkgewogICAgICAgICAgICAgICAgICAgICRMaW5rRGlyZWN0aW9uID0gJ1RhcmdldCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRMaW5rRGlyZWN0aW9uIGVxICdUYXJnZXQnICkgewogICAgICAgICAgICAgICAgICAgICRMaW5rRGlyZWN0aW9uID0gJ1NvdXJjZSc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBmaW5kIGFsbCBsaW5rZWQgY29uZmlnIGl0ZW1zIHdpdGggdGhpcyBsaW5rdHlwZSBhbmQgZGlyZWN0aW9uCiAgICAgICAgICAgICAgICBteSAlTGlua2VkQ29uZmlnSXRlbUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtLZXlMaXN0V2l0aERhdGEoCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0MSAgID0+ICdTZXJ2aWNlJywKICAgICAgICAgICAgICAgICAgICBLZXkxICAgICAgPT4gJFNlcnZpY2VEYXRhe1NlcnZpY2VJRH0sCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0MiAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb24gPT4gJExpbmtEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgcmVtZW1iZXIgdGhlIGxpbmtlZCBjb25maWcgaXRlbXMKICAgICAgICAgICAgICAgICVBbGxMaW5rZWRDb25maWdJdGVtSURzID0gKCAlQWxsTGlua2VkQ29uZmlnSXRlbUlEcywgJUxpbmtlZENvbmZpZ0l0ZW1JRHMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGludmVzdGlnYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIGVhY2ggY29uZmlnIGl0ZW0KICAgICAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAlQWxsTGlua2VkQ29uZmlnSXRlbUlEcyApIHsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgY29uZmlnIGl0ZW0gZGF0YQogICAgICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJEFsbExpbmtlZENvbmZpZ0l0ZW1JRHN7JENvbmZpZ0l0ZW1JRH07CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJENvbmZpZ0l0ZW1EYXRhLT57Q3VyRGVwbFN0YXRlVHlwZX0gbmUgJ3Byb2R1Y3RpdmUnOwogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJENvbmZpZ0l0ZW1EYXRhLT57Q3VySW5jaVN0YXRlVHlwZX0gZXEgJ29wZXJhdGlvbmFsJzsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHNlcnZpY2UgbXVzdCBiZSBzZXQgdG8gJ3dhcm5pbmcnCiAgICAgICAgICAgICAgICBpZiAoICRDb25maWdJdGVtRGF0YS0+e0N1ckluY2lTdGF0ZVR5cGV9IGVxICd3YXJuaW5nJyApIHsKICAgICAgICAgICAgICAgICAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlVHlwZX0gPSAnd2FybmluZyc7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiBzZXJ2aWNlIG11c3QgYmUgc2V0IHRvICdpbmNpZGVudCcKICAgICAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1EYXRhLT57Q3VySW5jaVN0YXRlVHlwZX0gZXEgJ2luY2lkZW50JyApIHsKICAgICAgICAgICAgICAgICAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlVHlwZX0gPSAnaW5jaWRlbnQnOwogICAgICAgICAgICAgICAgICAgIGxhc3QgQ09ORklHSVRFTUlEOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHVwZGF0ZSB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSB0eXBlIGZyb20gQ0lzIG9mIHRoZSBzZXJ2aWNlCiAgICAgICAgICAgICRTZWxmLT5TZXJ2aWNlUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJFNlcnZpY2VEYXRhe1NlcnZpY2VJRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJ0N1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzJywKICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlVHlwZX0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2V0IHRoZSBwcmVmZXJlbmNlcyBsb2NhbGx5CiAgICAgICAgICAgICRQcmVmZXJlbmNlc3tDdXJJbmNpU3RhdGVUeXBlRnJvbUNJc30gPSAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlVHlwZX07CiAgICAgICAgfQogICAgfQoKICAgICMgaW52ZXN0aWdhdGUgdGhlIHN0YXRlIG9mIGFsbCBjaGlsZCBzZXJ2aWNlcwogICAgaWYgKCAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlVHlwZX0gZXEgJ29wZXJhdGlvbmFsJyApIHsKCiAgICAgICAgIyBjcmVhdGUgdGhlIHZhbGlkIHN0cmluZwogICAgICAgIG15ICRWYWxpZElEU3RyaW5nID0gam9pbiBxeywgfSwgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkSURzR2V0KCk7CgogICAgICAgICMgcHJlcGFyZSBuYW1lCiAgICAgICAgbXkgJE5hbWUgPSAkU2VydmljZURhdGF7TmFtZX07CiAgICAgICAgJE5hbWUgPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICROYW1lLCAnTGlrZScgKTsKCiAgICAgICAgIyBnZXQgbGlzdCBvZiBhbGwgdmFsaWQgY2hpbGRzCiAgICAgICAgJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAiU0VMRUNUIGlkLCBuYW1lIEZST00gc2VydmljZSAiCiAgICAgICAgICAgICAgICAuICJXSEVSRSBuYW1lIExJS0UgJyIgLiAkTmFtZSAuICI6OiUnICIKICAgICAgICAgICAgICAgIC4gIkFORCB2YWxpZF9pZCBJTiAoIiAuICRWYWxpZElEU3RyaW5nIC4gIikiLAogICAgICAgICk7CgogICAgICAgICMgZmluZCBsZW5ndGggb2YgY2hpbGRzIHByZWZpeAogICAgICAgIG15ICRQcmVmaXhMZW5ndGggPSBsZW5ndGggIiRTZXJ2aWNlRGF0YXtOYW1lfTo6IjsKCiAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgbXkgQENoaWxkSURzOwogICAgICAgIFJPVzoKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IGNoaWxkIHBhcnQKICAgICAgICAgICAgbXkgJENoaWxkUGFydCA9IHN1YnN0ciAkUm93WzFdLCAkUHJlZml4TGVuZ3RoOwoKICAgICAgICAgICAgbmV4dCBST1cgaWYgJENoaWxkUGFydCA9fiBteyA6OiB9eG1zOwoKICAgICAgICAgICAgcHVzaCBAQ2hpbGRJRHMsICRSb3dbMF07CiAgICAgICAgfQoKICAgICAgICBTRVJWSUNFSUQ6CiAgICAgICAgZm9yIG15ICRTZXJ2aWNlSUQgKCBAQ2hpbGRJRHMgKSB7CgogICAgICAgICAgICAjIGdldCBkYXRhIG9mIGNoaWxkIHNlcnZpY2UKICAgICAgICAgICAgbXkgJUNoaWxkU2VydmljZURhdGEgPSAkU2VsZi0+U2VydmljZUdldCgKICAgICAgICAgICAgICAgIFNlcnZpY2VJRCAgICAgPT4gJFNlcnZpY2VJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBJbmNpZGVudFN0YXRlID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IFNFUlZJQ0VJRCBpZiAkQ2hpbGRTZXJ2aWNlRGF0YXtDdXJJbmNpU3RhdGVUeXBlfSBlcSAnb3BlcmF0aW9uYWwnOwoKICAgICAgICAgICAgJFNlcnZpY2VEYXRhe0N1ckluY2lTdGF0ZVR5cGV9ID0gJ3dhcm5pbmcnOwogICAgICAgICAgICBsYXN0IFNFUlZJQ0VJRDsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWZpbmUgZGVmYXVsdCBpbmNpZGVudCBzdGF0ZXMKICAgIG15ICVEZWZhdWx0SW5jaVN0YXRlcyA9ICgKICAgICAgICBvcGVyYXRpb25hbCA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIHdhcm5pbmcgICAgID0+ICdXYXJuaW5nJywKICAgICAgICBpbmNpZGVudCAgICA9PiAnSW5jaWRlbnQnLAogICAgKTsKCiAgICAjIGdldCB0aGUgaW5jaWRlbnQgc3RhdGUgbGlzdCBvZiB0aGlzIHR5cGUKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzICAgICAgICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIFByZWZlcmVuY2VzICAgPT4gewogICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+ICRTZXJ2aWNlRGF0YXtDdXJJbmNpU3RhdGVUeXBlfSwKICAgICAgICB9LAogICAgKTsKCiAgICBteSAlUmV2ZXJzZUluY2lTdGF0ZUxpc3QgPSByZXZlcnNlICV7ICRJbmNpU3RhdGVMaXN0IH07CiAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlSUR9CiAgICAgICAgPSAkUmV2ZXJzZUluY2lTdGF0ZUxpc3R7ICREZWZhdWx0SW5jaVN0YXRlc3sgJFNlcnZpY2VEYXRhe0N1ckluY2lTdGF0ZVR5cGV9IH0gfTsKCiAgICAjIGZhbGxiYWNrIGlmIHRoZSBkZWZhdWx0IGluY2lkZW50IHN0YXRlIGlzIGRlYWN0aXZhdGVkCiAgICBpZiAoICEkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlSUR9ICkgewogICAgICAgIG15IEBTb3J0ZWRJbmNpTGlzdCA9IHNvcnQga2V5cyAleyAkSW5jaVN0YXRlTGlzdCB9OwogICAgICAgICRTZXJ2aWNlRGF0YXtDdXJJbmNpU3RhdGVJRH0gPSAkU29ydGVkSW5jaUxpc3RbMF07CiAgICB9CgogICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgZnVuY3Rpb25hbGl0eQogICAgbXkgJEluY2lTdGF0ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtR2V0KAogICAgICAgIEl0ZW1JRCA9PiAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlSUR9LAogICAgKTsKCiAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlfSAgICAgPSAkSW5jaVN0YXRlLT57TmFtZX07CiAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlVHlwZX0gPSAkSW5jaVN0YXRlLT57RnVuY3Rpb25hbGl0eX1bMF0gLy8gJyc7CgogICAgJVNlcnZpY2VEYXRhID0gKCVTZXJ2aWNlRGF0YSwgJVByZWZlcmVuY2VzKTsKCiAgICByZXR1cm4gJVNlcnZpY2VEYXRhOwp9CgojIEVPIElUU01Db3JlCgoKIyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKPWhlYWQyIEF0dGFjaG1lbnRBZGQoKQoKYWRkIGFydGljbGUgYXR0YWNobWVudHMsIHJldHVybnMgdGhlIGF0dGFjaG1lbnQgaWQKICAgIG15ICRBdHRhY2htZW50SUQgPSAkU2VydmljZU9iamVjdC0+QXR0YWNobWVudEFkZCgKICAgICAgICBTZXJ2aWNlSUQgICA9PiAkMTIzLAogICAgICAgIEZpbGVOYW1lICAgID0+ICdGPGltYWdlLnBuZz4nLAogICAgICAgIENvbnRlbnRTaXplID0+ICcxMjMnLAogICAgICAgIENvbnRlbnRUeXBlID0+ICdpbWFnZS9wbmc7JywKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBJbmxpbmUgICAgICA9PiAxLCAgICgwfDEsIGRlZmF1bHQgMCkKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKUmV0dXJuczoKICAgICRBdHRhY2htZW50SUQgPSAxMjMgOyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgY2FuJ3QgYWRkIHRoZSBhdHRhY2htZW50Cj1jdXQKCnN1YiBBdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU2VydmljZUlEIEZpbGVOYW1lIENvbnRlbnRTaXplIENvbnRlbnRUeXBlIENvbnRlbnQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdAogICAgaWYgKCAhJFBhcmFte0lubGluZX0gKSB7CiAgICAgICAgJFBhcmFte0lubGluZX0gPSAwOwogICAgfQoKICAgICMgZ2V0IGFsbCBleGlzdGluZyBhdHRhY2htZW50cwogICAgbXkgQEluZGV4ID0gJFNlbGYtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICBTZXJ2aWNlSUQgPT4gJFBhcmFte1NlcnZpY2VJRH0sCiAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCB0aGUgZmlsZW5hbWUKICAgIG15ICROZXdGaWxlTmFtZSA9ICRQYXJhbXtGaWxlTmFtZX07CgogICAgIyBidWlsZCBhIGxvb2t1cCBoYXNoIG9mIGFsbCBleGlzdGluZyBmaWxlIG5hbWVzCiAgICBteSAlVXNlZEZpbGU7CiAgICBmb3IgbXkgJEZpbGUgKEBJbmRleCkgewogICAgICAgIGlmICggJEZpbGUtPntGaWxlTmFtZX0gKSB7CiAgICAgICAgICAgICRVc2VkRmlsZXsgJEZpbGUtPntGaWxlTmFtZX0gfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgdHJ5IHRvIG1vZGlmeSB0aGUgdGhlIGZpbGUgbmFtZSBieSBhZGRpbmcgYSBudW1iZXIgaWYgaXQgZXhpc3RzIGFscmVhZHkKICAgIG15ICRDb3VudCA9IDA7CiAgICB3aGlsZSAoICRDb3VudCA8IDUwICkgewoKICAgICAgICAjIGluY3JlYXNlIGNvdW50ZXIKICAgICAgICAkQ291bnQrKzsKCiAgICAgICAgIyBpZiB0aGUgZmlsZSBuYW1lIGV4aXN0cwogICAgICAgIGlmICggZXhpc3RzICRVc2VkRmlsZXskTmV3RmlsZU5hbWV9ICkgewoKICAgICAgICAgICAgIyBmaWxlbmFtZSBoYXMgYSBmaWxlIG5hbWUgZXh0ZW5zaW9uCiAgICAgICAgICAgIGlmICggJFBhcmFte0ZpbGVOYW1lfSA9fiBteyBcQSAoLiopIFwuICguKz8pIFx6IH14bXMgKSB7CiAgICAgICAgICAgICAgICAkTmV3RmlsZU5hbWUgPSAiJDEtJENvdW50LiQyIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICROZXdGaWxlTmFtZSA9ICIkUGFyYW17RmlsZU5hbWV9LSRDb3VudCI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBzdG9yZSB0aGUgbmV3IGZpbGVuYW1lCiAgICAkUGFyYW17RmlsZU5hbWV9ID0gJE5ld0ZpbGVOYW1lOwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZW5jb2RlIGF0dGFjaG1lbnQgaWYgaXQncyBhIHBvc3RncmVzcWwgYmFja2VuZAogICAgbXkgJUV4dHJhRG9QYXJhbXM7CiAgICBpZiAoICREQk9iamVjdC0+R2V0RGF0YWJhc2VGdW5jdGlvbignRGlyZWN0QmxvYicpICkgewoKICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHRoZSBjb250ZW50IGlzIHBhc3NlZCBhcyBhIGJ5dGUgYXJyYXkgYW5kIGlzIGJvdW5kIGFzIGJpbmFyeQogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKS0+RW5jb2RlT3V0cHV0KCBcJFBhcmFte0NvbnRlbnR9ICk7CiAgICAgICAgJEV4dHJhRG9QYXJhbXN7QmluZEFzQmluYXJ5fSA9IFsgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgXTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RW5jb2RlJyktPkVuY29kZU91dHB1dCggXCRQYXJhbXtDb250ZW50fSApOwogICAgICAgICRQYXJhbXtDb250ZW50fSA9IE1JTUU6OkJhc2U2NDo6ZW5jb2RlX2Jhc2U2NCggJFBhcmFte0NvbnRlbnR9ICk7CiAgICB9CgogICAgIyB3cml0ZSBhdHRhY2htZW50IHRvIGRiCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBzZXJ2aWNlX2F0dGFjaG1lbnQgJyAuCiAgICAgICAgICAgICcgKHNlcnZpY2VfaWQsIGZpbGVuYW1lLCBjb250ZW50X3NpemUsIGNvbnRlbnRfdHlwZSwgY29udGVudCwgaW5saW5lYXR0YWNobWVudCwgJyAuCiAgICAgICAgICAgICcgY3JlYXRlZCwgY3JlYXRlZF9ieSwgY2hhbmdlZCwgY2hhbmdlZF9ieSkgVkFMVUVTICcgLgogICAgICAgICAgICAnICg/LCA/LCA/LCA/LCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtTZXJ2aWNlSUR9LCBcJFBhcmFte0ZpbGVOYW1lfSwgXCRQYXJhbXtDb250ZW50U2l6ZX0sIFwkUGFyYW17Q29udGVudFR5cGV9LAogICAgICAgICAgICBcJFBhcmFte0NvbnRlbnR9LCBcJFBhcmFte0lubGluZX0sIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtVc2VySUR9LAogICAgICAgIF0sCiAgICAgICAgJUV4dHJhRG9QYXJhbXMsCiAgICApOwoKICAgICMgZ2V0IHRoZSBhdHRhY2htZW50IGlkCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCAnCiAgICAgICAgICAgIC4gJ0ZST00gc2VydmljZV9hdHRhY2htZW50ICcKICAgICAgICAgICAgLiAnV0hFUkUgc2VydmljZV9pZCA9ID8gQU5EIGZpbGVuYW1lID0gPyAnCiAgICAgICAgICAgIC4gJ0FORCBjb250ZW50X3NpemUgPSA/IEFORCAgY29udGVudF90eXBlID0gPyAnCiAgICAgICAgICAgIC4gJ0FORCBpbmxpbmVhdHRhY2htZW50ID0gPyAnCiAgICAgICAgICAgIC4gJ0FORCBjcmVhdGVkX2J5ID0gPyBBTkQgY2hhbmdlZF9ieSA9ID8nLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte1NlcnZpY2VJRH0sIFwkUGFyYW17RmlsZU5hbWV9LCBcJFBhcmFte0NvbnRlbnRTaXplfSwgXCRQYXJhbXtDb250ZW50VHlwZX0sCiAgICAgICAgICAgIFwkUGFyYW17SW5saW5lfSwgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAkQXR0YWNobWVudElEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEF0dGFjaG1lbnRJRCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICRBdHRhY2htZW50SUQ7Cn0KCj1oZWFkMiBTZXJ2aWNlSW5saW5lQXR0YWNobWVudFVSTFVwZGF0ZSgpClVwZGF0ZXMgdGhlIFVSTHMgb2YgdXBsb2FkZWQgaW5saW5lIGF0dGFjaG1lbnRzLgogICAgbXkgJFN1Y2Nlc3MgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUlubGluZUF0dGFjaG1lbnRVUkxVcGRhdGUoCiAgICAgICAgU2VydmljZUlEICA9PiAxMiwKICAgICAgICBGb3JtSUQgICAgID0+IDQ1NiwKICAgICAgICBGaWxlSUQgICAgID0+IDUsCiAgICAgICAgQXR0YWNobWVudCA9PiBcJUF0dGFjaG1lbnQsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKUmV0dXJuczoKICAgICRTdWNjZXNzID0gMTsgICAgICAgICAgICAgICAjIG9mIHVuZGVmIGlmIGF0dGFjaG1lbnQgVVJMIGNvdWxkIG5vdCBiZSB1cGRhdGVkCj1jdXQKCnN1YiBTZXJ2aWNlSW5saW5lQXR0YWNobWVudFVSTFVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFNlcnZpY2VJRCBBdHRhY2htZW50IEZvcm1JRCBGaWxlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBhdHRhY2htZW50IGlzIGEgaGFzaCByZWZlcmVuY2UKICAgIGlmICggcmVmICRQYXJhbXtBdHRhY2htZW50fSBuZSAnSEFTSCcgJiYgISV7ICRQYXJhbXtBdHRhY2htZW50fSB9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQXR0YWNobWVudCBtdXN0IGJlIGEgaGFzaCByZWZlcmVuY2UhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBvbmx5IGNvbnNpZGVyIGlubGluZSBhdHRhY2htZW50cyBoZXJlICh0aGV5IGhhdmUgYSBjb250ZW50IGlkKQogICAgcmV0dXJuIDEgaWYgISRQYXJhbXtBdHRhY2htZW50fS0+e0NvbnRlbnRJRH07CgogICAgbXkgJVNlcnZpY2VEYXRhID0gJFNlbGYtPlNlcnZpY2VHZXQoCiAgICAgICAgU2VydmljZUlEICA9PiAkUGFyYW17U2VydmljZUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIHBpY3R1cmUgVVJMIGluIHVwbG9hZCBjYWNoZQogICAgbXkgJFNlYXJjaCA9ICJBY3Rpb249UGljdHVyZVVwbG9hZCAuIEZvcm1JRD1cUSRQYXJhbXtGb3JtSUR9XEUgLiAiCiAgICAgICAgLiAiQ29udGVudElEPVxRJFBhcmFte0F0dGFjaG1lbnR9LT57Q29udGVudElEfVxFIjsKCiAgICAjIHBpY3R1cmUgVVJMIGluIFNlcnZpY2UgYXR0YWNobWVudAogICAgbXkgJFJlcGxhY2UgPSAiQWN0aW9uPUFnZW50SVRTTVNlcnZpY2Vab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7IgogICAgICAgIC4gIlNlcnZpY2VJRD0kUGFyYW17U2VydmljZUlEfTtGaWxlSUQ9JFBhcmFte0ZpbGVJRH0iOwoKICAgICMgcmV3cml0ZSBwaWN0dXJlIFVSTHMKICAgIGZvciBteSAkTGFuZ3VhZ2VJRCAoIGtleXMgJXskU2VydmljZURhdGF7RGVzY3JpcHRpb25zfX0gKSB7CiAgICAgICAgaWYgKCAkU2VydmljZURhdGF7RGVzY3JpcHRpb25zfS0+eyRMYW5ndWFnZUlEfS0+e0Rlc2NyaXB0aW9uTG9uZ30gKSB7CiAgICAgICAgICAgICMgcmVwbGFjZSBVUkwKICAgICAgICAgICAgJFNlcnZpY2VEYXRhe0Rlc2NyaXB0aW9uc30tPnskTGFuZ3VhZ2VJRH0tPntEZXNjcmlwdGlvbkxvbmd9ID1+IHN7JFNlYXJjaH17JFJlcGxhY2V9eG1zOwogICAgICAgIH0KICAgIH0KCiAgICAjIEN1dCBvZmYgc3ViIHNlcnZpY2VzIGZyb20gc2VydmljZSBuYW1lCiAgICAkU2VydmljZURhdGF7TmFtZX0gPSAoc3BsaXQgLzo6LywgJFNlcnZpY2VEYXRhe05hbWV9KVstMV07CgogICAgIyB1cGRhdGUgc2VydmljZQogICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+U2VydmljZVVwZGF0ZSgKICAgICAgICAlU2VydmljZURhdGEsCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIGlmIHVwZGF0ZSB3YXMgc3VjY2Vzc2Z1bAogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgdXBkYXRlIFNlcnZpY2VJRCckUGFyYW17U2VydmljZUlEfSchIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBBdHRhY2htZW50R2V0KCkKCmdldCBhdHRhY2htZW50IG9mIHNlcnZpY2UgSUQKICAgIG15ICVGaWxlID0gJFNlcnZpY2VPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgU2VydmljZUlEID0+IDEyMywKICAgICAgICBGaWxlSUQgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7ClJldHVybnM6CiAgICAlRmlsZSA9ICgKICAgICAgICBGaWxlc2l6ZSAgICA9PiAnNTQwMjg2JywgICAgICAgICAgICAgICAgIyBmaWxlIHNpemUgaW4gYnl0ZXMKICAgICAgICBDb250ZW50VHlwZSA9PiAnaW1hZ2UvanBlZycsCiAgICAgICAgRmlsZW5hbWUgICAgPT4gJ0Y8RXJyb3IuanBnPicsCiAgICAgICAgQ29udGVudCAgICAgPT4gJy4uLicgICAgICAgICAgICAgICAgICAgICMgZmlsZSBiaW5hcnkgY29udGVudAogICAgKTsKPWN1dAoKc3ViIEF0dGFjaG1lbnRHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTZXJ2aWNlSUQgRmlsZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgZmlsZW5hbWUsIGNvbnRlbnRfdHlwZSwgY29udGVudF9zaXplLCBjb250ZW50ICcKICAgICAgICAgICAgLiAnRlJPTSBzZXJ2aWNlX2F0dGFjaG1lbnQgJwogICAgICAgICAgICAuICdXSEVSRSBpZCA9ID8gQU5EIHNlcnZpY2VfaWQgPSA/ICcKICAgICAgICAgICAgLiAnT1JERVIgQlkgY3JlYXRlZCcsCiAgICAgICAgQmluZCAgID0+IFsgXCRQYXJhbXtGaWxlSUR9LCBcJFBhcmFte1NlcnZpY2VJRH0gXSwKICAgICAgICBFbmNvZGUgPT4gWyAxLCAxLCAxLCAwIF0sCiAgICAgICAgTGltaXQgID0+IDEsCiAgICApOwoKICAgIG15ICVGaWxlOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgICMgZGVjb2RlIGF0dGFjaG1lbnQgaWYgaXQncyBhIHBvc3RncmVzcWwgYmFja2VuZCBhbmQgbm90IEJMT0IKICAgICAgICBpZiAoICEkREJPYmplY3QtPkdldERhdGFiYXNlRnVuY3Rpb24oJ0RpcmVjdEJsb2InKSApIHsKICAgICAgICAgICAgJFJvd1szXSA9IE1JTUU6OkJhc2U2NDo6ZGVjb2RlX2Jhc2U2NCggJFJvd1szXSApOwogICAgICAgIH0KCiAgICAgICAgJEZpbGV7RmlsZW5hbWV9ICAgID0gJFJvd1swXTsKICAgICAgICAkRmlsZXtDb250ZW50VHlwZX0gPSAkUm93WzFdOwogICAgICAgICRGaWxle0ZpbGVzaXplfSAgICA9ICRSb3dbMl07CiAgICAgICAgJEZpbGV7Q29udGVudH0gICAgID0gJFJvd1szXTsKICAgIH0KCiAgICByZXR1cm4gJUZpbGU7Cn0KCj1oZWFkMiBBdHRhY2htZW50SW5kZXgoKQpyZXR1cm4gYW4gYXR0YWNobWVudCBpbmRleCBvZiBhbiBzZXJ2aWNlIGlkCiAgICBteSBASW5kZXggPSAkU2VydmljZU9iamVjdC0+QXR0YWNobWVudEluZGV4KAogICAgICAgIFNlcnZpY2VJRCAgPT4gMTIzLAogICAgICAgIFNob3dJbmxpbmUgPT4gMCwgICAoIDB8MSwgZGVmYXVsdCAxKQogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7ClJldHVybnM6CiAgICBASW5kZXggPSAoCiAgICAgICAgewogICAgICAgICAgICBGaWxlc2l6ZSAgICA9PiAnNTI3LjYgS0J5dGVzJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2ltYWdlL2pwZWcnLAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnRjxFcnJvci5qcGc+JywKICAgICAgICAgICAgRmlsZXNpemVSYXcgPT4gNTQwMjg2LAogICAgICAgICAgICBGaWxlSUQgICAgICA9PiA2LAogICAgICAgICAgICBJbmxpbmUgICAgICA9PiAwLAogICAgICAgIH0sCiAgICAgICAgeywKICAgICAgICAgICAgRmlsZXNpemUgPT4gJzQzMC4wIEtCeXRlcycsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAgICAgRmlsZW5hbWUgPT4gJ0Y8U29sdXRpb24uanBnPicsCiAgICAgICAgICAgIEZpbGVzaXplUmF3ID0+IDQ0MDI4NiwKICAgICAgICAgICAgRmlsZUlEID0+IDUsCiAgICAgICAgICAgIElubGluZSA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBGaWxlc2l6ZSA9PiAnMjk2IEJ5dGVzJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICAgICBGaWxlbmFtZSA9PiAnRjxBZGRpdGlvbmFsQ29tbWVudHMudHh0PicsCiAgICAgICAgICAgIEZpbGVzaXplUmF3ID0+IDI5NiwKICAgICAgICAgICAgRmlsZUlEID0+IDcsCiAgICAgICAgICAgIElubGluZSA9PiAwLAogICAgICAgIH0sCiAgICApOwo9Y3V0CgpzdWIgQXR0YWNobWVudEluZGV4IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU2VydmljZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQsIGZpbGVuYW1lLCBjb250ZW50X3R5cGUsIGNvbnRlbnRfc2l6ZSwgaW5saW5lYXR0YWNobWVudCAnCiAgICAgICAgICAgIC4gJ0ZST00gc2VydmljZV9hdHRhY2htZW50ICcKICAgICAgICAgICAgLiAnV0hFUkUgc2VydmljZV9pZCA9ID8gJwogICAgICAgICAgICAuICdPUkRFUiBCWSBmaWxlbmFtZScsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1NlcnZpY2VJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxMDAsCiAgICApOwoKICAgIG15IEBJbmRleDsKICAgIEFUVEFDSE1FTlQ6CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKCiAgICAgICAgbXkgJElEICAgICAgICAgID0gJFJvd1swXTsKICAgICAgICBteSAkRmlsZW5hbWUgICAgPSAkUm93WzFdOwogICAgICAgIG15ICRDb250ZW50VHlwZSA9ICRSb3dbMl07CiAgICAgICAgbXkgJEZpbGVzaXplICAgID0gJFJvd1szXTsKICAgICAgICBteSAkSW5saW5lICAgICAgPSAkUm93WzRdOwoKICAgICAgICAjIGRvIG5vdCBzaG93IGlubGluZSBhdHRhY2htZW50cwogICAgICAgIGlmICggZGVmaW5lZCAkUGFyYW17U2hvd0lubGluZX0gJiYgISRQYXJhbXtTaG93SW5saW5lfSAmJiAkSW5saW5lICkgewogICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQ7CiAgICAgICAgfQoKICAgICAgICAjIGNvbnZlcnQgdG8gaHVtYW4gcmVhZGFibGUgZmlsZSBzaXplCiAgICAgICAgbXkgJEZpbGVTaXplUmF3ID0gJEZpbGVzaXplOwogICAgICAgIGlmICgkRmlsZXNpemUpIHsKICAgICAgICAgICAgaWYgKCAkRmlsZXNpemUgPiAoIDEwMjQgKiAxMDI0ICkgKSB7CiAgICAgICAgICAgICAgICAkRmlsZXNpemUgPSBzcHJpbnRmICIlLjFmIE1CeXRlcyIsICggJEZpbGVzaXplIC8gKCAxMDI0ICogMTAyNCApICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkRmlsZXNpemUgPiAxMDI0ICkgewogICAgICAgICAgICAgICAgJEZpbGVzaXplID0gc3ByaW50ZiAiJS4xZiBLQnl0ZXMiLCAoICggJEZpbGVzaXplIC8gMTAyNCApICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkRmlsZXNpemUgPSAkRmlsZXNpemUgLiAnIEJ5dGVzJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcHVzaCBASW5kZXgsIHsKICAgICAgICAgICAgRmlsZUlEICAgICAgPT4gJElELAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICRDb250ZW50VHlwZSwKICAgICAgICAgICAgRmlsZXNpemUgICAgPT4gJEZpbGVzaXplLAogICAgICAgICAgICBGaWxlc2l6ZVJhdyA9PiAkRmlsZVNpemVSYXcsCiAgICAgICAgICAgIElubGluZSAgICAgID0+ICRJbmxpbmUsCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gQEluZGV4Owp9Cgo9aGVhZDIgQXR0YWNobWVudERlbGV0ZSgpCmRlbGV0ZSBhdHRhY2htZW50IG9mIGFydGljbGUKICAgIG15ICRTdWNjZXNzID0gJFNlcnZpY2VPYmplY3QtPkF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgU2VydmljZUlEID0+IDEyMywKICAgICAgICBGaWxlSUQgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7ClJldHVybnM6CiAgICAkU3VjY2VzcyA9IDEgOyAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBhdHRhY2htZW50IGNvdWxkIG5vdCBiZSBkZWxldGVkCj1jdXQKCnN1YiBBdHRhY2htZW50RGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU2VydmljZUlEIEZpbGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIHNlcnZpY2VfYXR0YWNobWVudCBXSEVSRSBpZCA9ID8gQU5EIHNlcnZpY2VfaWQgPSA/ICcsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17RmlsZUlEfSwgXCRQYXJhbXtTZXJ2aWNlSUR9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9Zm9yIHN0b3B3b3JkcyBhY2wKCj1oZWFkMiBVcGRhdGVUeXBTZXJ2aWNlQUNMKCkKZGVsZXRlIGF0dGFjaG1lbnQgb2YgYXJ0aWNsZQogICAgbXkgJFN1Y2Nlc3MgPSAkU2VydmljZU9iamVjdC0+VXBkYXRlVHlwU2VydmljZUFDTCgKICAgICAgICBTZXJ2aWNlSUQgPT4gMTIzLAogICAgICAgIFRpY2tldFR5cGVJRCAgICA9PiAxLCAjIE9wdGlvbmFsCiAgICAgICAgU2VydmljZVZhbGlkID0+IDAsMSwyLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKUmV0dXJuczoKICAgICRTdWNjZXNzID0gMSA7ICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGFjbCBjb3VsZCBub3QgYmUgYWRkZWQvY2hhbmdlZC9kZWxldGVkCj1jdXQKCnN1YiBVcGRhdGVUeXBTZXJ2aWNlQUNMIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU2VydmljZUlEIFNlcnZpY2VWYWxpZCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRTdWNjZXNzOwogICAgbXkgJEFDTE5hbWU7CgogICAgbXkgJEFDTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBQ0w6OkRCOjpBQ0wnKTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkQUNMT3B0aW9ucyA9ICRDb25maWdPYmplY3QtPkdldCgnU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHM6Ok9wdGlvbnMnKTsKICAgIG15ICRHZW5lcmF0ZUluaXRhbEFDTFRvRGlzYWJsZUFsbFNlcnZpY2VzID0gJFBhcmFte0dlbmVyYXRlSW5pdGFsQUNMVG9EaXNhYmxlQWxsU2VydmljZXN9IHx8ICRBQ0xPcHRpb25zLT57R2VuZXJhdGVJbml0YWxBQ0xUb0Rpc2FibGVBbGxTZXJ2aWNlc307CiAgICBteSAkUG9zc2libGUgPSAkUGFyYW17Q29uZmlnQ2hhbmdlfSB8fCAkQUNMT3B0aW9ucy0+e0NvbmZpZ0NoYW5nZX07CiAgICBteSAkQUNMRGVwbG95ID0gJFBhcmFte0FDTERlcGxveX0gfHwgJEFDTE9wdGlvbnMtPntBQ0xEZXBsb3l9OwogICAgbXkgJEFDTFZhbGlkSUQgPSAkUGFyYW17QUNMVmFsaWRJRH0gfHwgJEFDTE9wdGlvbnMtPntBQ0xWYWxpZElEfTsKICAgIG15ICRGcm9udGVuZEFjdGlvbiA9ICRQYXJhbXtGcm9udGVuZEFjdGlvbn0gfHwgJEFDTE9wdGlvbnMtPntGcm9udGVuZEFjdGlvbn07CgogICAgbXkgJFR5cGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpOwogICAgbXkgJFRpY2tldFR5cGUgPSAkVHlwZU9iamVjdC0+VHlwZUxvb2t1cCggVHlwZUlEID0+ICRQYXJhbXtUaWNrZXRUeXBlSUR9ICk7CgogICAgbXkgJFNlcnZpY2VPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpOwogICAgbXkgJFNlcnZpY2VOYW1lID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VMb29rdXAoIFNlcnZpY2VJRCA9PiAkUGFyYW17U2VydmljZUlEfSApOwoKICAgIGlmICggISRUaWNrZXRUeXBlICkgewogICAgIyBSZW1vdmUgU2VydmljZSBmcm9tIGFsbCBBQ0xzLgoKICAgICAgICBteSAlVHlwZUxpc3QgPSAkVHlwZU9iamVjdC0+VHlwZUxpc3QoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgVFlQRToKICAgICAgICBmb3IgbXkgJFRpY2tldFR5cGUgKCB2YWx1ZXMgJVR5cGVMaXN0ICkgewoKICAgICAgICAgICAgbXkgJEFDTFJlbW92ZU5hbWUgPSAnenp6IC0gU2hvdyBTZXJ2aWNlIGJhc2VkIG9uIFRpY2tldC1UeXBlOiAnIC4gJFRpY2tldFR5cGU7CgogICAgICAgICAgICAjIENoZWNrIGlmIGRpc2FibGUgQUNMIGV4aXN0cwogICAgICAgICAgICBteSAkQUNMID0gJEFDTE9iamVjdC0+QUNMR2V0KAogICAgICAgICAgICAgICAgTmFtZSAgID0+ICRBQ0xSZW1vdmVOYW1lLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoSXNIYXNoUmVmV2l0aERhdGEoJEFDTCkgKSB7CiAgICAgICAgICAgICAgICBteSAkQ29uZmlnQ2hhbmdlSGFzaFJlZk9sZCA9ICRBQ0wtPntDb25maWdDaGFuZ2V9OwogICAgICAgICAgICAgICAgbXkgJE9sZFNlcnZpY2VzICAgICAgICAgICAgPSAkQ29uZmlnQ2hhbmdlSGFzaFJlZk9sZC0+eyRQb3NzaWJsZX0gJiYgJENvbmZpZ0NoYW5nZUhhc2hSZWZPbGQtPnskUG9zc2libGV9e1RpY2tldH0KICAgICAgICAgICAgICAgICAgICA/ICRDb25maWdDaGFuZ2VIYXNoUmVmT2xkLT57JFBvc3NpYmxlfXtUaWNrZXR9e1NlcnZpY2V9IDogdW5kZWY7CiAgICAgICAgICAgICAgICBteSBAQ29uZmlnU2VydmljZXMgICAgICAgICA9ICRPbGRTZXJ2aWNlcyA/ICRPbGRTZXJ2aWNlcy0+QCogOiAoKTsKCiAgICAgICAgICAgICAgICBAQ29uZmlnU2VydmljZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGdyZXAgeyAkXyAhfiAvJFNlcnZpY2VOYW1lLyB9IEBDb25maWdTZXJ2aWNlczsKICAgICAgICAgICAgICAgICRDb25maWdDaGFuZ2VIYXNoUmVmT2xkLT57JFBvc3NpYmxlfXtUaWNrZXR9e1NlcnZpY2V9ID0gW0BDb25maWdTZXJ2aWNlc107CiAgICAgICAgICAgICAgICAkQUNMLT57Q29uZmlnQ2hhbmdlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICRDb25maWdDaGFuZ2VIYXNoUmVmT2xkOwoKICAgICAgICAgICAgICAgICRTdWNjZXNzID0gJEFDTE9iamVjdC0+QUNMVXBkYXRlKAogICAgICAgICAgICAgICAgICAgICRBQ0wtPiUqLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBHZW5lcmF0ZSBhIGluaXRpYWwgQUNMLCB3aGljaCBkaXNhYmxlIGFsbCBzZXJ2aWNlcwogICAgaWYgKCAkR2VuZXJhdGVJbml0YWxBQ0xUb0Rpc2FibGVBbGxTZXJ2aWNlcyBlcSAnMScgKSB7CgogICAgICAgIG15ICRBQ0xEaXNhYmxlTmFtZSA9ICd6emEgLSBEaXNhYmxlIGFsbCBTZXJ2aWNlcyBpZiBubyBUaWNrZXQtVHlwZSBpcyBzZWxlY3RlZC4nOwoKICAgICAgICAjIENoZWNrIGlmIGRpc2FibGUgQUNMIGV4aXN0cwogICAgICAgIG15ICRBQ0wgPSAkQUNMT2JqZWN0LT5BQ0xHZXQoCiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJEFDTERpc2FibGVOYW1lLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIEFDTCBpZiBpdCBub3QgZXhpc3RzCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJEFDTCkgKSB7CgogICAgICAgICAgICBteSAkRGlzYWJsZUNvbmZpZ01hdGNoSGFzaFJlZjsKICAgICAgICAgICAgJERpc2FibGVDb25maWdNYXRjaEhhc2hSZWYtPntQcm9wZXJ0aWVzfS0+e0Zyb250ZW5kfS0+e0FjdGlvbn0gPSAkRnJvbnRlbmRBY3Rpb247CiAgICAgICAgICAgICMgJERpc2FibGVDb25maWdNYXRjaEhhc2hSZWYtPntQcm9wZXJ0aWVzfS0+e1RpY2tldH0tPntUeXBlfSA9IFtdOwoKICAgICAgICAgICAgbXkgJERpc2FibGVDb25maWdDaGFuZ2VIYXNoUmVmOwogICAgICAgICAgICAkRGlzYWJsZUNvbmZpZ0NoYW5nZUhhc2hSZWYtPntQb3NzaWJsZU5vdH17VGlja2V0fXtTZXJ2aWNlfSA9IFsnW1JlZ0V4cF0uKiddOwoKICAgICAgICAgICAgICAgIG15ICVOZXdBQ0wgPSAoCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJEFDTERpc2FibGVOYW1lLAogICAgICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICAgID0+ICdUaGlzIEFDTCB3YXMgZ2VuZXJhdGVkIHdoZW4gYSBzZXJ2aWNlIHdhcyBhZGRlZCBvciBjaGFuZ2VkLicsCiAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJ1RoaXMgQUNMIGlzIHVzZWQgdG8gcmVzdHJpY3QgU2VydmljZXMgcGVyIFRpY2tldC1UeXBlJywKICAgICAgICAgICAgICAgICAgICBTdG9wQWZ0ZXJNYXRjaCA9PiAwLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ01hdGNoICAgID0+ICREaXNhYmxlQ29uZmlnTWF0Y2hIYXNoUmVmLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0NoYW5nZSAgID0+ICREaXNhYmxlQ29uZmlnQ2hhbmdlSGFzaFJlZiwKICAgICAgICAgICAgICAgICAgICBWYWxpZElEICAgICAgICA9PiAkQUNMVmFsaWRJRCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkQUNMT2JqZWN0LT5BQ0xBZGQoCiAgICAgICAgICAgICAgICAgICAgJU5ld0FDTCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICRBQ0xOYW1lID0gJ3p6eiAtIFNob3cgU2VydmljZSBiYXNlZCBvbiBUaWNrZXQtVHlwZTogJyAuICRUaWNrZXRUeXBlOwoKICAgIG15ICRBQ0wgPSAkQUNMT2JqZWN0LT5BQ0xHZXQoCiAgICAgICAgTmFtZSAgID0+ICRBQ0xOYW1lLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICBpZiAoICRQYXJhbXtTZXJ2aWNlVmFsaWR9ICE9IDEgKSB7CiAgICAgICAgaWYgKCAkQUNMICkgewogICAgICAgICAgICAkU3VjY2VzcyA9ICRBQ0xPYmplY3QtPkFDTERlbGV0ZSgKICAgICAgICAgICAgICAgIElEICAgICA9PiAkQUNMLT57SUR9LAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBlbHNlIHsKICAgICAgICBteSAkQWN0aW9uOwogICAgICAgIG15ICRDb25maWdDaGFuZ2VIYXNoUmVmT2xkID0gJEFDTC0+e0NvbmZpZ0NoYW5nZX07CgogICAgICAgIG15ICRPbGRTZXJ2aWNlcyA9ICRDb25maWdDaGFuZ2VIYXNoUmVmT2xkLT57JFBvc3NpYmxlfSAmJiAkQ29uZmlnQ2hhbmdlSGFzaFJlZk9sZC0+eyRQb3NzaWJsZX17VGlja2V0fSA/ICRDb25maWdDaGFuZ2VIYXNoUmVmT2xkLT57JFBvc3NpYmxlfXtUaWNrZXR9e1NlcnZpY2V9IDogdW5kZWY7CiAgICAgICAgbXkgQENvbmZpZ1NlcnZpY2VzID0gJE9sZFNlcnZpY2VzID8gJE9sZFNlcnZpY2VzLT5AKiA6ICgpOwoKICAgICAgICBteSAkQ29uZmlnTWF0Y2hIYXNoUmVmICA9IHt9OwogICAgICAgICRDb25maWdNYXRjaEhhc2hSZWYtPntQcm9wZXJ0aWVzfS0+e1RpY2tldH0tPntUeXBlfSA9IFsiJFRpY2tldFR5cGUiXTsKICAgICAgICAkQ29uZmlnTWF0Y2hIYXNoUmVmLT57UHJvcGVydGllc30tPntGcm9udGVuZH0tPntBY3Rpb259ID0gJEZyb250ZW5kQWN0aW9uOwoKICAgICAgICBteSAkQ29uZmlnQ2hhbmdlSGFzaFJlZiA9IHt9OwoKICAgICAgICBpZiAoISBncmVwIHsgJF8gPX4gLyRTZXJ2aWNlTmFtZS8gfSBAQ29uZmlnU2VydmljZXMgKSB7CiAgICAgICAgICAgIHB1c2ggKEBDb25maWdTZXJ2aWNlcywgJFNlcnZpY2VOYW1lKTsKICAgICAgICAgICAgJENvbmZpZ0NoYW5nZUhhc2hSZWYtPnskUG9zc2libGV9e1RpY2tldH17U2VydmljZX0gPSBbQENvbmZpZ1NlcnZpY2VzXTsKCiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKFxAQ29uZmlnU2VydmljZXMpICkgewogICAgICAgICAgICAgICAgJEFjdGlvbiA9ICdVcGRhdGUnOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJEFjdGlvbiA9ICdEZWxldGUnOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJENvbmZpZ0NoYW5nZUhhc2hSZWYgPSAkQ29uZmlnQ2hhbmdlSGFzaFJlZk9sZDsKICAgIH0KCiAgICAgICAgbXkgJU5ld0FDTCA9ICgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJEFDTE5hbWUsCiAgICAgICAgICAgIENvbW1lbnQgICAgICAgID0+ICdUaGlzIEFDTCB3YXMgZ2VuZXJhdGVkIHdoZW4gYSBzZXJ2aWNlIHdhcyBhZGRlZCBvciBjaGFuZ2VkLicsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgID0+ICdUaGlzIEFDTCBpcyB1c2VkIHRvIHJlc3RyaWN0IFNlcnZpY2VzIHBlciBUaWNrZXQtVHlwZScsCiAgICAgICAgICAgIFN0b3BBZnRlck1hdGNoID0+IDAsCiAgICAgICAgICAgIENvbmZpZ01hdGNoICAgID0+ICRDb25maWdNYXRjaEhhc2hSZWYsCiAgICAgICAgICAgIENvbmZpZ0NoYW5nZSAgID0+ICRDb25maWdDaGFuZ2VIYXNoUmVmLAogICAgICAgICAgICBWYWxpZElEICAgICAgICA9PiAkQUNMVmFsaWRJRCwKICAgICAgICApOwoKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRBQ0wpICkgewogICAgICAgICAgICAkU3VjY2VzcyA9ICRBQ0xPYmplY3QtPkFDTFVwZGF0ZSgKICAgICAgICAgICAgICAgICRBQ0wtPiUqLAogICAgICAgICAgICAgICAgJU5ld0FDTCwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJEFDTE9iamVjdC0+QUNMQWRkKAogICAgICAgICAgICAgICAgJU5ld0FDTCwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvdWxkIG5vdCAnIC4gKCAkUGFyYW17RGVsZXRlfSA/ICdkZWxldGUnIDogJ3VwZGF0ZScgKSAuICIgQUNMICRBQ0xOYW1lISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgRG9uJ3QgZGVwbG95IG5ldyBBQ0wsIGNhdXNlIFNlcnZpY2VDYXRhbG9nOjpDcmVhdGVUeXBlU2VydmljZVJlbGF0ZWRBY2xzOjpPcHRpb25zIC0+IERlcGxveSBpcyBkaXNhYmxlZAogICAgaWYgKCAkQUNMRGVwbG95IG5lICcxJyApIHsKCiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBkZXBsb3kgbmV3IEFDTHMgLSB0YWtlbiBmcm9tIEtlcm5lbC9Nb2R1bGVzL0FkbWluQUNMCiAgICBteSAkTG9jYXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKSAuICcvS2VybmVsL0NvbmZpZy9GaWxlcy9aWlpBQ0wucG0nOwoKICAgICRTdWNjZXNzID0gJEFDTE9iamVjdC0+QUNMRHVtcCgKICAgICAgICBSZXN1bHRUeXBlID0+ICdGSUxFJywKICAgICAgICBMb2NhdGlvbiAgID0+ICRMb2NhdGlvbiwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKICAgIGlmICggJFN1Y2Nlc3MgKSB7CgogICAgICAgICRTdWNjZXNzID0gJEFDTE9iamVjdC0+QUNMc05lZWRTeW5jUmVzZXQoKTsKCiAgICAgICAgIyByZW1vdmUgcHJlc2VsZWN0aW9uIGNhY2hlIFRPRE86IHJlYnVpbGQgdGhlIGNhY2hlIHByb3Blcmx5IChhIHNpbXBsZSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPlNldEFDTFByZXNlbGVjdGlvbkNhY2hlKCk7IHVzZXMgdGhlIG9sZCBBQ0xzKQogICAgICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICBUeXBlID0+ICdUaWNrZXRBQ0wnLCAgICAgICMgb25seSBbYS16QS1aMC05X10gY2hhcnMgdXNhYmxlCiAgICAgICAgICAgIEtleSAgPT4gJ1ByZXNlbGVjdGlvbicsCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvdWxkIG5vdCBkZXBsb3kgQUNMcyAtIG1hbnVhbCBmaXggbmVlZGVkIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHJldHVybiAxOwp9CiMgRU8gU2VydmljZUNhdGFsb2cKCjE7Cg==</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+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9yZGVyIj43PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpDdXN0b21lckRhc2hib2FyZDo6VGlsZVNlcnZpY2VDYXRhbG9nPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWciPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkhlYWRlclRleHQiPkZpbmQgdGhlIHJpZ2h0IHNlcnZpY2UgZm9yIHlvdXIgdGlja2V0PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8IS0tIEZJWE1FOiBUaGlzIGNvdWxkIGJlIHJlbmFtZWQ7IHdvdWxkIHByb2JhYmx5IGJyZWFrIGV4aXN0aW5nIGNvbmZpZ3Mgb24gaW5zdGFsbGVkIHN5c3RlbXMgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckRhc2hib2FyZDo6Q29uZmlndXJhdGlvbjo6U2VydmljZUNhdGFsb2ciIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QWRkaXRpb25hbCBzZXR0aW5ncyBmb3IgdGhlIHNlcnZpY2UgY2F0YWxvZy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6RGFzaGJvYXJkOjpDb25maWd1cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkluY2lkZW50Ij5vb29mby1iYW5nIG9vb0NvbG9yLVJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSW5jaWRlbnQ6Ok1ham9yIj5vb29mby1iYW5nIG9vb0NvbG9yLVJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZVJlcXVlc3QiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJvYmxlbSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJSZkMiPjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckRhc2hib2FyZDo6Q29uZmlndXJhdGlvbjo6U2VydmljZUNhdGFsb2cjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIHNlcnZpY2UgY2F0YWxvZyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6RGFzaGJvYXJkOjpDb25maWd1cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEeW5hbWljRmllbGRTY3JlZW5zIyMjU2VydmljZUNhdGFsb2ciIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBjb25maWd1cmF0aW9uIGRlZmluZXMgYWxsIHBvc3NpYmxlIHNjcmVlbnMgdG8gZW5hYmxlIG9yIGRpc2FibGUgZHluYW1pYyBmaWVsZHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6RHluYW1pY0ZpZWxkU2NyZWVuczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lckRhc2hib2FyZDo6Q29uZmlndXJhdGlvbjo6U2VydmljZUNhdGFsb2cjIyNEeW5hbWljRmllbGQiPkN1c3RvbWVyRGFzaGJvYXJkVGlsZSBTZXJ2aWNlQ2F0YWxvZzwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckRhc2hib2FyZDo6Q29uZmlndXJhdGlvbjo6U2VydmljZUNhdGFsb2cjIyNTb3J0QnlUaWNrZXRUeXBlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgc2VydmljZXMgd2l0aCB0aGUgZm9sbG93aW5nIHRpY2tldCB0eXBlIGxhc3QuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkRhc2hib2FyZDo6Q29uZmlndXJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPkluY2lkZW50PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckRhc2hib2FyZDo6Q29uZmlndXJhdGlvbjo6U2VydmljZUNhdGFsb2cjIyNGQVFEZXNjcmlwdGlvbkZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoZSBGQVEgZmllbGQgdGhhdCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZGVzY3JpcHRpb24gb2YgYW4gRkFRIGFydGljbGUgaW4gdGhlIHNpZGViYXIgKGUuZy4gRmllbGQxLCBGaWVsZDIsIEZpZWxkMy4uLikuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkRhc2hib2FyZDo6Q29uZmlndXJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPkZpZWxkMTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkN1c3RvbWVyRGFzaGJvYXJkIyMjMDAzLUN1c3RvbWVyRGFzaGJvYXJkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5EYXNoYm9hcmQuVGlsZVNlcnZpY2VDYXRhbG9nLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5XaWRnZXQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5vb29XaWRnZXQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQ3VzdG9tZXIuVGlsZVNlcnZpY2VDYXRhbG9nLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjQ3VzdG9tZXJUaWxlU2VydmljZUNhdGFsb2ciIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkN1c3RvbWVyVGlsZVNlcnZpY2VDYXRhbG9nIEFKQVggTW9kdWxlLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPlNlcnZpY2UgQ2F0YWxvZzwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEeW5hbWljRmllbGRzOjpPYmplY3RUeXBlIyMjU2VydmljZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljRmllbGQgb2JqZWN0IHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkR5bmFtaWNGaWVsZHM6Ok9iamVjdFR5cGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGlzcGxheU5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+U2VydmljZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpPYmplY3RUeXBlOjpTZXJ2aWNlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4xNDA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVzZU9iamVjdE5hbWUiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBvcHRpb24gYWxsb3dzIHlvdSB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIEFDTHMgZm9yIGRpZmZlcmVudCBpbnRlcmZhY2VzIHdoZW4gY3JlYXRpbmcgc2VydmljZXMuIFNlcnZpY2VzIHdpbGwgdGhlbiBvbmx5IGJlIGRpc3BsYXllZCBpZiB0aGUgdGlja2V0IHR5cGUgc3RvcmVkIGluIHRoZSBzZXJ2aWNlIGhhcyBiZWVuIHNlbGVjdGVkLiBUaGUgIkFkZEJ1bGtBQ0wiIGNvbnNvbGUgc2NyaXB0IGNhbiBhbHNvIGJlIHVzZWQgdG8gY3JlYXRlIEFDTHMgZm9yIHNlcnZpY2VzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gY3JlYXRlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6QWNsPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNsczo6T3B0aW9ucyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGlzIG9wdGlvbiBtYWtlcyBpdCBwb3NzaWJsZSB0byBwcmVjb25maWd1cmUgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIEFDTHMuIFRoZSBhaW0gaXMgdG8gb25seSBkaXNwbGF5IHRoZSBzZXJ2aWNlcyB0aGF0IGhhdmUgYWxzbyBiZWVuIGFzc2lnbmVkIHRvIHRoZSBzZXJ2aWNlIGluIHRoZSBzZXJ2aWNlIGNhdGFsb2cuIFRvIHVzZSB0aGlzIGZ1bmN0aW9uLCBwbGVhc2UgZmlyc3QgZW5hYmxlIHRoZSAiU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHMiIG9wdGlvbi4gIkdlbmVyYXRlSW5pdGFsQUNMVG9EaXNhYmxlQWxsU2VydmljZXMiIGdlbmVyYXRlcyBhbiBBQ0wgdGhhdCBpbml0aWFsbHkgaGlkZXMgYWxsIHNlcnZpY2VzLiBUaGUgdmFsdWUgIlBvc3NpYmxlIiBvciAiUG9zc2libGVBZGQiIGNhbiBiZSBzZXQgZm9yIHRoZSBrZXkgIkNvbmZpZ0NoYW5nZSIuIFRoZSAiRGVwbG95TmV3QUNMIiBrZXkgZGVjaWRlcyB3aGV0aGVyIHRoZSBjaGFuZ2VkIEFDTCBzaG91bGQgYWxzbyBiZSBkZXBsb3llZCBpbW1lZGlhdGVseS4gIkFDTFZhbGlkSUQiICgxLCAyLCAzKSBzZXRzIHRoZSBBQ0xzIHRvIHZhbGlkLCBpbnZhbGlkIG9yIHRlbXBvcmFyaWx5IGludmFsaWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpBY2w8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRnJvbnRlbmRBY3Rpb24iPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q3VzdG9tZXJUaWNrZXRNZXNzYWdlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5BZ2VudFRpY2tldFBob25lPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5BZ2VudFRpY2tldEVtYWlsPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5BZ2VudFRpY2tldEZyZWVUZXh0PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkdlbmVyYXRlSW5pdGFsQUNMVG9EaXNhYmxlQWxsU2VydmljZXMiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0NoYW5nZSI+UG9zc2libGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFDTERlcGxveSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQUNMVmFsaWRJRCI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkV2ZW50TW9kdWxlUG9zdCMjIzk3MDAtU2V0RHluYW1pY0ZpZWxkQ3JpdGljYWxpdHlGcm9tU2VydmljZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FdmVudCBtb2R1bGUgcmVnaXN0cmF0aW9uLiBDdXJyZW50bHksIHRoZSBjcml0aWNhbGl0eSBvZiB0aGUgc2VydmljZSBjYW4gYWxzbyBiZSBzZXQgaW4gdGhlIHNlcnZpY2UsIGJ1dCB0aGlzIGhhcyBubyBlZmZlY3QuIFRoZXJlZm9yZSwgdGhpcyBldmVudCBtb2R1bGUgaGFzIGJlZW4gaW1wbGVtZW50ZWQgdGhhdCBhdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdGhlIER5bmFtaWNGaWVsZCBDcml0aWNhbGl0eSBpbiBhIHRpY2tldCBhcyBzb29uIGFzIGEgc2VydmljZSBoYXMgYmVlbiBhc3NpZ25lZC4gUGxlYXNlIGFjdGl2YXRlIHRoZSBTeXNDb25maWcgb3B0aW9uIFNldFByaW9yaXR5RnJvbUNyaXRpY2FsaXR5QW5kSW1wYWN0TWF0cml4IHRvIHNldCB0aGUgcHJpb3JpdHkgaW4gdGhlIG5leHQgc3RlcCBiYXNlZCBhbiBDcml0aWNhbGl0eSBhbmQgSW1wYWN0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OlRpY2tldDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpTZXREeW5hbWljRmllbGRDcml0aWNhbGl0eUZyb21TZXJ2aWNlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUcmFuc2FjdGlvbiI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPlRpY2tldFNlcnZpY2VVcGRhdGV8VGlja2V0Q3JlYXRlPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RXZlbnRNb2R1bGVQb3N0IyMjOTgwMC1TZXRQcmlvcml0eUZyb21Dcml0aWNhbGl0eUFuZEltcGFjdE1hdHJpeCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FdmVudCBtb2R1bGUgcmVnaXN0cmF0aW9uLiBDdXJyZW50bHksIHRoZSBjcml0aWNhbGl0eSBvZiB0aGUgc2VydmljZSBjYW4gYWxzbyBiZSBzZXQgaW4gdGhlIHNlcnZpY2UsIGJ1dCB0aGlzIGhhcyBubyBlZmZlY3QuIFRoZXJlZm9yZSwgdGhpcyBldmVudCBtb2R1bGUgaGFzIGJlZW4gaW1wbGVtZW50ZWQgdGhhdCBhdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdGhlIHByaW9yaXR5IHJlZ2FyZGluZyBDcml0aWNhbGl0eSBhbmQgSW1wYWN0IGluIGEgdGlja2V0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OlRpY2tldDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpTZXRQcmlvcml0eUZyb21Dcml0aWNhbGl0eUFuZEltcGFjdE1hdHJpeDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHJhbnNhY3Rpb24iPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij5UaWNrZXREeW5hbWljRmllbGRVcGRhdGVfSVRTTUNyaXRpY2FsaXR5fFRpY2tldER5bmFtaWNGaWVsZFVwZGF0ZV9JVFNNSW1wYWN0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudElUU01TZXJ2aWNlWm9vbSMjIzAwMi1TZXJ2aWNlQ2F0YWxvZyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LklUU01TZXJ2aWNlWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+Cg==</File>
        <File Location="Kernel/Language/de_ServiceCatalog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX1NlcnZpY2VDYXRhbG9nOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogVGlsZVNlcnZpY2VDYXRhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGRldGFpbHMgb2YgdGhpcyBzZXJ2aWNlLid9ID0gJ1plaWdlIGRpZSBEZXRhaWxzIHZvbiBkaWVzZW0gU2VydmljZS4nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluU2VydmljZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JpdGljYWxpdHknfSA9ICdLcml0aWthbGl0w6R0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgZGVwZW5kcyBvbiB0aGUgZm9sbG93aW5nIHRpY2tldCB0eXBlcyd9ID0gJ0RlciBTZXJ2aWNlIHdpcmQgZsO8ciBmb2xnZW5kZSBUaWNrZXQtVHlwZW4gYW5nZXplaWd0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBkZXN0aW5hdGlvbiBxdWV1ZSd9ID0gJ1RpY2tldCBaaWVsLVF1ZXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGRlZmF1bHQgc2VydmljZSd9ID0gJ1NlcnZpY2UgZsO8ciBhbGxlIEt1bmRlbiBhbnplaWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ1NjaGzDvHNzZWx3w7ZydGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgRGVzY3JpcHRpb24nfSA9ICdTZXJ2aWNlLUJlc2NocmVpYnVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIG5vdCBwcmVzZW50IG9yIGVuYWJsZWQgb24gdGhlIHN5c3RlbS4gVGhpcyBzZXJ2aWNlIGRlc2NyaXB0aW9uIGNvdWxkIGJlIGRlbGV0ZWQgaWYgaXQgaXMgbm90IG5lZWRlZCBhbnltb3JlLid9ID0KICAgICAgICAnRGllc2UgU3ByYWNoZSBpc3QgbmljaHQgdmVyZsO8Z2JhciBvZGVyIGF1ZiBkZW0gU3lzdGVtIGFrdGl2aWVydC4gRGllIFNlcnZpY2UtQmVzY2hyZWlidW5nIGthbm4gZ2Vsw7ZzY2h0IHdlcmRlbiwgc29mZXJuIHNpZSBuaWNodCBtZWhyIGJlbsO2dGlndCB3aXJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZW1vdmUgU2VydmljZSBEZXNjcmlwdGlvbiBMYW5ndWFnZSd9ID0gJ1NwcmFjaGUgZGVyIFNlcnZpY2UtQmVzY2hyZWlidW5nIGVudGZlcm5lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbmV3IHNlcnZpY2UgZGVzY3JpcHRpb24gbGFuZ3VhZ2UnfSA9ICdOZXVlIFNwcmFjaGUgZGVyIFNlcnZpY2UtQmVzY2hyZWlidW5nIGhpbnp1ZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wdGlvbiBSZWZlcmVuY2UnfSA9ICdLb25maWd1cmF0aW9uc3JlZmVyZW56JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyd9ID0gJ0RpZSBmb2xnZW5kZW4gT3B0aW9uZW4ga8O2bm5lbiB2ZXJ3ZW5kZXQgd2VyZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpdGhpbiB0aGUgU2VydmljZUNhdGFsb2d1ZSB0aWxlIGluIHRoZSBjdXN0b21lciBkYXNoYm9hcmQsIGl0IGlzIHBvc3NpYmxlIHRvIHNob3cgdGlja2V0IHR5cGVzIGZvciBwcmVjb25maWd1cmVkIHRpY2tldCBjcmVhdGlvbiBpbnNpZGUgdGhlIHNlcnZpY2UgZGVzY3JpcHRpb24uIEZ1cnRoZXJtb3JlLCBpdCBpcyBwb3NzaWJsZSB0byByZXN0cmljdCB0aGUgc2VydmljZXMgZm9yIG90aGVyIHNjcmVlbnMgdXNpbmcgdGhlIHRpY2tldCB0eXBlcyBzZXQgaGVyZS4gSWYgeW91IHdpc2ggdG8gZG8gdGhpcywgcGxlYXNlIGFjdGl2YXRlIHRoZSBvcHRpb25zICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNscyIgYW5kICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNsczo6T3B0aW9ucyIgaW4gdGhlIE9UT0JPIHN5c3RlbSBjb25maWd1cmF0aW9uLiBUaGUgcmVzdHJpY3Rpb24gaXMgbWFkZSB2aWEgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgQUNMcywgd2hpY2ggY2FuIGJlIHZpZXdlZCB1bmRlciAiQWRtaW4gLT4gQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTCkiLiBJZiBuZWNlc3NhcnksIHBsZWFzZSBhZGp1c3QgdGhlIG9wdGlvbiAiU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHM6Ok9wdGlvbnMiIGFjY29yZGluZyB0byB5b3VyIHJlcXVpcmVtZW50cy4nfSA9CiAgICAgICAgJ0lubmVyaGFsYiBkZXIgU2VydmljZWthdGFsb2ctS2FjaGVsIGltIEt1bmRlbi1EYXNoYm9hcmQgaXN0IGVzIG3DtmdsaWNoLCBUaWNrZXR0eXBlbiBpbiBkZXIgU2VydmljZS1CZXNjaHJlaWJ1bmcgZsO8ciBlaW5lIHZvcmtvbmZpZ3VyaWVydGUgVGlja2V0ZXJzdGVsbHVuZyBhbnp1emVpZ2VuLiBXZWl0ZXJoaW4gaXN0IGVzIG3DtmdsaWNoLCBkaWUgU2VydmljZXMgZsO8ciBhbmRlcmUgT2JlcmZsw6RjaGVuIGVpbnp1c2NocsOkbmtlbiwgYXVmIEdydW5kbGFnZSBkZXIgaGllciB2ZXJ3ZW5kZXRlbiBUaWNrZXR0eXBlbi4gSXN0IGRpZXNlcyB2ZXJoYWx0ZW4gZ2V3w7xuc2NodCwgYml0dGUgZGllIEVpbnN0ZWxsdW5nZW4gIlNlcnZpY2VDYXRhbG9nOjpDcmVhdGVUeXBlU2VydmljZVJlbGF0ZWRBY2xzIiB1bmQgIlNlcnZpY2VDYXRhbG9nOjpDcmVhdGVUeXBlU2VydmljZVJlbGF0ZWRBY2xzOjpPcHRpb25zIiBpbiBkZXIgT1RPQk8gU3lzdGVta29uZmlndXJhdGlvbiBha3RpdmllcmVuLiBEaWVzZSBFaW5zY2hyw6Rua3VuZyB3aXJkIMO8YmVyIGF1dG9tYXRpc2NoIGVyc3RlbGx0ZSBBQ0xzIHVtZ2VzZXR6dCwgZGllIHVudGVyICJBZG1pbiAtPiBBY2Nlc3MgQ29udHJvbCBMaXN0cyAoQUNMKSIgYW5nZXNlaGVuIHdlcmRlbiBrw7ZubmVuLiBTb2Zlcm4gbsO2dGlnLCBiaXR0ZSBkaWUgRWluc3RlbGx1bmcgIlNlcnZpY2VDYXRhbG9nOjpDcmVhdGVUeXBlU2VydmljZVJlbGF0ZWRBY2xzOjpPcHRpb25zIiBhbiBkaWUgQW5mb3JkZXJ1bmdlbiBhbnBhc3Nlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgd2Ugd29yayBzZXJ2aWNlLWJhc2VkLCB3ZSBkbyBub3Qgd2FudCB0byBvZmZlciB0aGUgY3VzdG9tZXIgYSBjaG9pY2Ugb2YgcXVldWVzIGluIHRoZSBjdXN0b21lciBwb3J0YWwgd2hlbiBjcmVhdGluZyBhIHRpY2tldCwgYnV0IGRlY2lkZSBvbiB0aGUgYmFzaXMgb2YgdGhlIHNlcnZpY2UgaW50byB3aGljaCBxdWV1ZSAob3Igd2hpY2ggdGVhbSBvZiBhZ2VudHMpIHRoZSB0aWNrZXQgc2hvdWxkIGJlIHByb2Nlc3NlZCBmaXJzdC4gSW4gb3JkZXIgdG8gdXNlIHRoaXMgb3B0aW9uIHNlbnNpYmx5LCBwbGVhc2UgZGVhY3RpdmF0ZSB0aGUgb3B0aW9uICJUaWNrZXQ6OkZyb250ZW5kOjpDdXN0b21lclRpY2tldE1lc3NhZ2UjIyNRdWV1ZSIgYW5kIHNldCBhIHNlbnNpYmxlIGRlZmF1bHQgcXVldWUgaW4gdGhlIG9wdGlvbiAiVGlja2V0OjpGcm9udGVuZDo6Q3VzdG9tZXJUaWNrZXRNZXNzYWdlIyMjUXVldWVEZWZhdWx0Ii4gQXMgc29vbiBhcyB5b3Ugc2V0IGEgIlRpY2tldCBkZXN0aW5hdGlvbiBxdWV1ZSIgaGVyZSBpbiB0aGUgc2VydmljZSwgdGhlIHRpY2tldCB3aWxsIGltbWVkaWF0ZWx5IGJlIGNyZWF0ZWQgaW4gdGhpcyBxdWV1ZS4gSWYgdGhlIGZpZWxkIHJlbWFpbnMgZW1wdHksIHRoZSBkZWZhdWx0IHF1ZXVlIGNvbmZpZ3VyZWQgYWJvdmUgd2lsbCBiZSB1c2VkLid9ID0KICAgICAgICAnU29mZXJuIFNlcml2Y2UtYmFzaWVydCBnZWFyYmVpdGV0IHdpcmQsIHNvbGwgZGVtIEt1bmRlbiBpbSBLdW5kZW5wb3J0YWwgd8OkaHJlbmQgZGVyIFRpY2tldGVyc3RlbGx1bmcgendhciBlaW5lIEF1c3dhaGwgZGVyIFF1ZXVlcyBhbmdlemVpZ3Qgd2VyZGVuLCBqZWRvY2ggc29sbCBkaWUgRW50c2NoZWlkdW5nICwgaW4gd2VsY2hlciBRdWV1ZSAob2RlciB3ZWxjaGVtIEFnZW50ZW4tVGVhbSkgZGFzIFRpY2tldCB6dW7DpGNoc3QgYmVhcmJlaXRldCB3ZXJkZW4gc29sbCwgYXVmIEJhc2lzIGRlcyBTZXJ2aWNlIGdldHJvZmZlbiB3ZXJkZW4uIFVtIGRpZXNlIE9wdGlvbiB2ZXJuw7xuZnRpZyB6dSB2ZXJ3ZW5kZW4sIHNvbGx0ZSBkaWUgRWluc3RlbGx1bmcgIlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0TWVzc2FnZSMjI1F1ZXVlIiBkZWFrdGl2aWVydCB3ZXJkZW4gdW5kIGVpbmUgc2lubnZvbGxlIFN0YW5kYXJkLVF1ZXVlIGluIGRlciBFaW5zdGVsbHVuZyAiVGlja2V0OjpGcm9udGVuZDo6Q3VzdG9tZXJUaWNrZXRNZXNzYWdlIyMjUXVldWVEZWZhdWx0IiBnZXNldHp0IHdlcmRlbi4gU29iYWxkIGhpZXIgaW0gU2VydmljZSBlaW5lICJUaWNrZXQgWmllbC1RdWV1ZSIgZWluZ2VzdGVsbHQgd3VyZGUsIHdpcmQgZGFzIFRpY2tldCB1bm1pdHRlbGJhciBpbiBkaWVzZXIgUXVldWUgZXJzdGVsbHQuIFNvZmVybiBkYXMgRmVsZCBsZWVyIGJsZWlidCwgd2lyZCBkaWUgb2JlbiBnZXNldHp0ZSBEZWZhdWx0LVF1ZXVlIHZlcndlbmRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgeW91IGRvIG5vdCBhc3NpZ24gc2VydmljZXMgdG8gY3VzdG9tZXJzIG9yIGNvbXBhbmllcyBpbmRpdmlkdWFsbHksIGJ1dCBhbGwgc2VydmljZXMgYXJlIGluaXRpYWxseSBvZmZlcmVkIHRvIHlvdXIgY3VzdG9tZXJzIGZvciBzZWxlY3Rpb24sIHRoZSBzdGVwIG9mIHJlbGVhc2luZyBlYWNoIHNlcnZpY2UgYXMgYSAiZGVmYXVsdCIgc2VydmljZSB1bmRlciAiQWRtaW4gLT4gQ3VzdG9tZXIgdXNlciA8LT4gU2VydmljZSIgKG9yICJDdXN0b21lciA8LT4gU2VydmljZSIpIGNhbiBiZSBieXBhc3NlZCBoZXJlLiBPZiBjb3Vyc2UsIGluIHRoZSBuZXh0IHN0ZXAgaXQgaXMgcG9zc2libGUgdG8gcmVzdHJpY3QgdGhlIHNlcnZpY2VzIHZpYSBBQ0xzLid9ID0KICAgICAgICAnU29mZXJuIGRlbiBLdW5kZW5iZW51dHplcm4gb2RlciBLdW5kZW4gKEZpcm1lbikga2VpbmUgU2VydmljZXMgaW5kaXZpZHVlbGwgenVnZW9yZG5ldCB3ZXJkZW4sIGFiZXIgYWxsZSBTZXJ2aWNlcyBkZW4gS3VuZGVuIHp1ciBBdXN3YWhsIGFuZ2Vib3RlbiB3ZXJkZW4sIGthbm4gZGVyIFNjaHJpdHRlIGFsbGUgU2VydmljZXMgYWxzICJTdGFuZGFyZCItU2VydmljZSB1bnRlciAiQWRtaW4gLT4gS3VuZGVuYmVudXR6ZXIgPC0+IFNlcnZpY2UiIChiencuICJBZG1pbiAtPiBLdW5kZSA8LT4gU2VydmljZSIpIGhpZXIgdW1nYW5nZW4gd2VyZGVuLiBOYXTDvHJsaWNoIGlzdCBlcyBpbSBuw6RjaHN0ZW4gU2Nocml0dCBtw7ZnbGljaCwgZGllIFNlcnZpY2VzIHZpYSBBQ0xzIGVpbnp1c2NocsOkbmtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSwgdGhlcmUgaXMgdGhlIHBvc3NpYmlsaXR5IHRvIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHRpY2tldCBwcmlvcml0eSBpbiB0aGUgYmFja2dyb3VuZCBiYXNlZCBvbiB0aGUgZHluYW1pYyBmaWVsZCAiSVRTTUNyaXRpY2FsaXR5IiBhbmQgIklUU01JbXBhY3QiLiBQbGVhc2UgYWN0aXZhdGUgdGhlIG9wdGlvbiAiVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyM5NzAwLVNldER5bmFtaWNGaWVsZENyaXRpY2FsaXR5RnJvbVNlcnZpY2UiIGFuZCB0aGUgb3B0aW9uICJUaWNrZXQ6OkV2ZW50TW9kdWxlUG9zdCMjIzk4MDAtU2V0UHJpb3JpdHlGcm9tQ3JpdGljYWxpdHlBbmRJbXBhY3RNYXRyaXgiLiBJbiB0aGUgbmV4dCBzdGVwLCB5b3UgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdXNpbmcgIkFkbWluIC0+IENyaXRpY2FsaXR5IOKGlCBJbXBhY3Qg4oaUIFByaW9yaXR5IiB0byBzZXQgdGhlIHByaW9yaXR5IHVzaW5nIGEgbWF0cml4Lid9ID0KICAgICAgICAnSGllciBnaWJ0IGVzIGRpZSBNw7ZnbGljaGtlaXQsIGRpZSBrb3JyZWt0ZSBUaWNrZXQtUHJpb3JpdMOkdCBiYXNpZXJlbmQgYXVmIGRlbiBEeW5hbWlzY2hlbiBGZWxkZXJuICJJVFNNQ3JpdGljYWxpdHkiIHVuZCAiSVRTTUltcGFjdCIgaW0gSGludGVyZ3J1bmQgenUgYmVyZWNobmVuLiBIaWVyZsO8ciBiaXR0ZSBkaWUgRWluc3RlbGx1bmciVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyM5NzAwLVNldER5bmFtaWNGaWVsZENyaXRpY2FsaXR5RnJvbVNlcnZpY2UiIHVuZCBkaWUgRWluc3RlbGx1bmcgIlRpY2tldDo6RXZlbnRNb2R1bGVQb3N0IyMjOTgwMC1TZXRQcmlvcml0eUZyb21Dcml0aWNhbGl0eUFuZEltcGFjdE1hdHJpeCIgYWt0aXZpZXJlbi4gSW0gbsOkY2hzdGVuIFNjaHJpdHQgZ2lidCBlcyBkaWUgTcO2Z2xpY2hrZWl0IGRpZSBQcmlvcml0w6R0IGluIGVpbmVyIE1hdHJpeCB1bnRlciAiQWRtaW4gLT4gS3JpdGlrYWxpdMOkdCDihpQgQXVzd2lya3VuZyDihpQgUHJpb3JpdMOkdCIgenUgc2V0emVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkcyB0byBmYWNpbGl0YXRlIHRoZSBzZWFyY2ggZm9yIHNlcnZpY2VzIHdpdGhpbiB0aGUgc2VydmljZSBjYXRhbG9nLid9ID0KICAgICAgICAnU2NobMO8c3NlbHfDtnJ0ZXIgdW0gZGllIFN1Y2hlIG5hY2ggU2VydmljZXMgaW5uZXJoYWxiIGRlcyBTZXJ2aWNla2F0YWxvZ3MgenUgZXJsZWljaHRlcm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgZGVzY3JpcHRpb25zIChzaG9ydCAmIGxvbmcpIHNwZWNpZmllZCBieSBVc2VyIExhbmd1YWdlLid9ID0KICAgICAgICAnU2VydmljZS1CZXNjaHJlaWJ1bmcgKGt1cnogdW5kIGxhbmcpLCBmZXN0Z2VsZWd0IGR1cmNoIGRpZSBBbndlbmRlcnNwcmFjaGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3J0IHN1bW1hcnkgb2YgdGhlIHNlcnZpY2UsIG1haW5seSB1c2VkIGluIHRoZSBDdXN0b21lckRhc2hib2FyZC4nfSA9CiAgICAgICAgJ0t1cnpiZXNjaHJlaWJ1bmcgZGVzIFNlcnZpY2UsIHZvciBhbGxlbSB2ZXJ3ZW5kZXQgaW0gRGlhbG9nIEN1c3RvbWVyRGFzaGJvYXJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNjcmlwdGlvbiBvZiB0aGUgc2VydmljZS4gU2NyZWVuc2hvdHMgYW5kIHRhYmxlcyBhcmUgYWxzbyBhbGxvd2VkLiBQbGVhc2UgZW5zdXJlIHRoZSBjb3JyZWN0IHdpZHRoIG9mIHRoZSBpbWFnZSBmb3Igc2NyZWVuc2hvdHMuIFRoaXMgY2FuIGJlIGFkanVzdGVkIGluIHRoZSBja2VkaXRvciBhZnRlciB1cGxvYWRpbmcgdGhlIHNjcmVlbnNob3QuIEEgd2lkdGggb2YgNjAwcHggaGFzIHByb3ZlbiB0byBiZSB1c2VmdWwgb3IgeW91IGNhbiBjb25maWd1cmUgYSAibWF4LXdpZHRoIiBvZiA5NSUgdW5kZXIgQWR2YW5jZWQuJ30gPQogICAgICAgICdCZXNjaHJlaWJ1bmcgZGVzIFNlcnZpY2UuIFNjcmVlbnNob3RzIHVuZCBUYWJlbGxlbiBzaW5kIGF1Y2ggZXJsYXVidC4gQml0dGUgc2ljaGVyc3RlbGxlbiwgZGFzcyBkaWUga29ycmVrdGUgQmlsZGJyZWl0ZSBmw7xyIFNjcmVlbnNob3RzIHZlcndlbmRldCB3aXJkLiAgRGllc2Uga2FubiBuYWNoIGRlbSBIb2NobGFkZW4gZGVzIFNjcmVlbnNob3RzIGltIEVkaXRvciBhbmdlcGFzc3Qgd2VyZGVuLiBFaW5lIEJyZWl0ZSB2b24gNjAwcHggd3VyZGUgYWxzIHNpbm52b2xsIGVyYWNodGV0LiBBbHRlcm5hdGl2IGthbm4gdW50ZXIgIkVyd2VpdGVydCIgZWluZSBNYXhpbWFsYnJlaXRlIHZvbiA5NSUga29uZmlndXJpZXJ0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIG1vcmUgc2VydmljZSBjYXRhbG9nIGZpZWxkcyd9ID0gJ1dlaXRlcmUgU2VydmljZWthdGFsb2ctRmVsZGVyIGhpbnp1ZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIHRoZSBvcHRpb24gb2YgYWRkaW5nIGZ1cnRoZXIgZmllbGRzIGhlcmUgaW4gdGhlIHNlcnZpY2UgY2F0YWxvZyBhdCBhbnkgdGltZS4gVG8gZG8gdGhpcywgcGxlYXNlIGdvIHRvICJBZG1pbiAtPiBEeW5hbWljRmllbGRzIiBhbmQgY3JlYXRlIHRoZSBuZXcgZmllbGQgb2YgdGhlIG9iamVjdCB0eXBlICJTZXJ2aWNlIi4gWW91IGNhbiB0aGVuIGFjdGl2YXRlIHRoZSBmaWVsZCBmb3IgdGhlIGN1c3RvbWVyIGRhc2hib2FyZCB1bmRlciAiQWRtaW4gLT4gRHluYW1pY0ZpZWxkIFNjcmVlbnMiIGJ5IGFzc2lnbmluZyBpdCB1bmRlciAiQ3VzdG9tZXJEYXNoYm9hcmRUaWxlIFNlcnZpY2VDYXRhbG9nIi4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNU0xBWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0xBIEluZm9ybWF0aW9uJ30gPSAnU0xBLUluZm9ybWF0aW9uZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnWnVsZXR6dCBnZcOkbmRlcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnWnVsZXR6dCBnZcOkbmRlcnQgdm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmltdW0gVGltZSBCZXR3ZWVuIEluY2lkZW50cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NvY2lhdGVkIFNlcnZpY2VzJ30gPSAnWnVnZWjDtnJpZ2UgU2VydmljZXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTVNlcnZpY2Vab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEluZm9ybWF0aW9uJ30gPSAnU2VydmljZS1JbmZvcm1hdGlvbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgaW5jaWRlbnQgc3RhdGUnfSA9ICdBa3R1ZWxsZXIgVm9yZmFsbHN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NvY2lhdGVkIFNMQXMnfSA9ICdadWdlaMO2cmlnZSBTTEFzJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBUaWxlU2VydmljZUNhdGFsb2dDb250YWluZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhIG5ldyB0aWNrZXQgZm9yIHRoaXMgc2VydmljZS4nfSA9ICdOZXVlcyBUaWNrZXQgZsO8ciBkaWVzZW4gU2VydmljZSBoaW56dWbDvGdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlICVzJ30gPSAnJXMgZXJzdGVsbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgJXMgc3ViLXNlcnZpY2UocyknfSA9ICdaZWlnZSAlcyBVbnRlci1TZXJ2aWNlKHMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vcmUgZGV0YWlscyd9ID0gJ1dlaXRlcmUgRGV0YWlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWItU2VydmljZShzKSd9ID0gJ1VudGVyLVNlcnZpY2UocyknOwoKICAgICMgSlMgVGVtcGxhdGU6IFRpbGVTZXJ2aWNlQ2F0YWxvZ0RldGFpbGVkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydzdWItc2VydmljZShzKSBhdmFpbGFibGUnfSA9ICd2ZXJmw7xnYmFyZShyKSBVbnRlcnNlcnZpY2UocyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGEgbmV3IHRpY2tldCBvZiB0eXBlICVzLid9ID0gJ0VpbiBuZXVlcyBUaWNrZXQgdm9tIFR5cCAlcyBlcnN0ZWxsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlIG9uIHRoaXMgdG9waWMnfSA9ICdGQVEtQXJ0aWtlbCB6dSBkaWVzZW0gVGhlbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkaXRpb25hbCBpbmZvcm1hdGlvbid9ID0gJ1p1c8OkdHpsaWNoZSBJbmZvcm1hdGlvbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgaG91cnMnfSA9ICdTZXJ2aWNlLVplaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvXCdjbG9jayd9ID0gJ1Vocic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhZGRpdGlvbmFsIGRhdGEgYXJlIGF2YWlsYWJsZS4nfSA9ICdFcyBzaW5kIGtlaW5lIHdlaXRlcmVuIERhdGVuIHZlcmbDvGdiYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1cnRoZXIgaW5mb3JtYXRpb24nfSA9ICdXZWl0ZXJlIEluZm9ybWF0aW9uZW4nOwoKICAgICMgSlMgVGVtcGxhdGU6IFRpbGVTZXJ2aWNlQ2F0YWxvZ01vZGFsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY2F0YWxvZyd9ID0gJ1N1Y2hrYXRhbG9nJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lclRpbGVTZXJ2aWNlQ2F0YWxvZy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVzY3JpcHRpb24gbm90IGF2YWlsYWJsZS4nfSA9ICdCZXNjaHJlaWJ1bmcgbmljaHQgdmVyZsO8Z2Jhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnQmVuw7Z0aWdlIEZpbGVJRCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTVNlcnZpY2Vab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTZXJ2aWNlSUQgaXMgZ2l2ZW4hJ30gPSAnS2VpbmUgU2VydmljZUlEIHZvcmhhbmRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdTZXJ2aWNlSUQgJXMgbmljaHQgaW4gRGF0ZW5iYW5rIGdlZnVuZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdXYXJudW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnVm9yZmFsbCc7CgogICAgIyBKUyBGaWxlOiBDb3JlLkFnZW50LkFkbWluLlNlcnZpY2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBzZXJ2aWNlIGRlc2NyaXB0aW9uIGxhbmd1YWdlPyd9ID0KICAgICAgICAnU29sbCBkaWVzZSBTcHJhY2hlIGRlciBTZXJ2aWNlLUJlc2NocmVpYnVuZyB3aXJrbGljaCBnZWzDtnNjaHQgd2VyZGVuPyc7CgogICAgIyBKUyBGaWxlOiBDb3JlLkN1c3RvbWVyLlRpbGVTZXJ2aWNlQ2F0YWxvZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBmb3IgJXMnfSA9ICdFcmdlYm5pc3NlIGbDvHIgJXMnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRpdGlvbmFsIHNldHRpbmdzIGZvciB0aGUgc2VydmljZSBjYXRhbG9nLid9ID0gJ1p1c8OkdHpsaWNoZSBFaW5zdGVsbHVuZ2VuIGbDvHIgZGVuIFNlcnZpY2VrYXRhbG9nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lclRpbGVTZXJ2aWNlQ2F0YWxvZyBBSkFYIE1vZHVsZS4nfSA9ICdDdXN0b21lclRpbGVTZXJ2aWNlQ2F0YWxvZyBBSkFYIE1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgc2VydmljZSBjYXRhbG9nIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2NoZSBGZWxkZXIsIGRpZSBpbiBkZXIgU2VydmljZWthdGFsb2ctT2JlcmZsw6RjaGUgZGVzIEt1bmRlbmJlcmVpY2hzIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSByZWdpc3RyYXRpb24uIEN1cnJlbnRseSwgdGhlIGNyaXRpY2FsaXR5IG9mIHRoZSBzZXJ2aWNlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgc2VydmljZSwgYnV0IHRoaXMgaGFzIG5vIGVmZmVjdC4gVGhlcmVmb3JlLCB0aGlzIGV2ZW50IG1vZHVsZSBoYXMgYmVlbiBpbXBsZW1lbnRlZCB0aGF0IGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgRHluYW1pY0ZpZWxkIENyaXRpY2FsaXR5IGluIGEgdGlja2V0IGFzIHNvb24gYXMgYSBzZXJ2aWNlIGhhcyBiZWVuIGFzc2lnbmVkLiBQbGVhc2UgYWN0aXZhdGUgdGhlIFN5c0NvbmZpZyBvcHRpb24gU2V0UHJpb3JpdHlGcm9tQ3JpdGljYWxpdHlBbmRJbXBhY3RNYXRyaXggdG8gc2V0IHRoZSBwcmlvcml0eSBpbiB0aGUgbmV4dCBzdGVwIGJhc2VkIGFuIENyaXRpY2FsaXR5IGFuZCBJbXBhY3QuJ30gPQogICAgICAgICdFdmVudC1Nb2R1bHJlZ2lzdHJpZXJ1bmcuIE1vbWVudGFuIGthbm4gZGllIEtyaXRpa2FsaXTDpHQgZGVzIFNlcnZpY2UgYXVjaCBpbSBTZXJ2aWNlIGZlc3RnZWxlZ3Qgd2VyZGVuLCBoYXQgYWxsZXJkaW5ncyBrZWluZSBXaXJrdW5nLiBEYWhlciB3dXJkZSBkaWVzZXMgRXZlbnQtTW9kdWwgaW1wbGVtZW50aWVydCwgZGFzIGF1dG9tYXRpc2NoIGRhcyBEeW5hbWlzY2hlIEZlbGQgS3JpdGlrYWxpdMOkdCBpbiBlaW5lbSBUaWNrZXQgYWt0dWFsaXNpZXJ0LCBzb2JhbGQgZWluIFNlcnZpY2UgenVnZW9yZG5ldCB3dXJkZS4gQml0dGUgZGllIFN5c3RlbWtvbmZpZ3VyYXRpb25zLUVpbnN0ZWxsdW5nICJTZXRQcmlvcml0eUZyb21Dcml0aWNhbGl0eUFuZEltcGFjdE1hdHJpeCIgYWt0aXZpZXJlbiwgdW0gZGllIFByaW9yaXTDpHQgYXVmIEJhc2lzIGRlciBLcml0aWthbGl0w6R0IHVuZCBkaWUgQXVzd2lya3VuZyBpbSBuw6RjaHN0ZW4gU2Nocml0dCB6dSBzZXR6ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSByZWdpc3RyYXRpb24uIEN1cnJlbnRseSwgdGhlIGNyaXRpY2FsaXR5IG9mIHRoZSBzZXJ2aWNlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgc2VydmljZSwgYnV0IHRoaXMgaGFzIG5vIGVmZmVjdC4gVGhlcmVmb3JlLCB0aGlzIGV2ZW50IG1vZHVsZSBoYXMgYmVlbiBpbXBsZW1lbnRlZCB0aGF0IGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgcHJpb3JpdHkgcmVnYXJkaW5nIENyaXRpY2FsaXR5IGFuZCBJbXBhY3QgaW4gYSB0aWNrZXQuJ30gPQogICAgICAgICdFdmVudC1Nb2R1bHJlZ2lzdHJpZXJ1bmcuIE1vbWVudGFuIGthbm4gZGllIEtyaXRpa2FsaXTDpHQgZGVzIFNlcnZpY2UgYXVjaCBpbSBTZXJ2aWNlIGZlc3RnZWxlZ3Qgd2VyZGVuLCBoYXQgYWxsZXJkaW5ncyBrZWluZSBXaXJrdW5nLiBEYWhlciB3dXJkZSBkaWVzZXMgRXZlbnQtTW9kdWwgaW1wbGVtZW50aWVydCwgZGFzIGF1dG9tYXRpc2NoIGRpZSBQcmlvcml0w6R0IHVuZCBkaWUgQXVzd2lya3VuZyBpbiBlaW5lbSBUaWNrZXQgYWt0dWFsaXNpZXJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHNlcnZpY2VzIHdpdGggdGhlIGZvbGxvd2luZyB0aWNrZXQgdHlwZSBsYXN0Lid9ID0gJ1NlcnZpY2VzIG1pdCBkZW0gZm9sZ2VuZGVuIFRpY2tldHR5cGVuIHp1bGV0enQgYW56ZWlnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBGQVEgZmllbGQgdGhhdCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZGVzY3JpcHRpb24gb2YgYW4gRkFRIGFydGljbGUgaW4gdGhlIHNpZGViYXIgKGUuZy4gRmllbGQxLCBGaWVsZDIsIEZpZWxkMy4uLikuJ30gPQogICAgICAgICdEYXMgRkFRLUZlbGQsIHdlbGNoZXMgaW4gZGVyIEJlc2NocmVpYnVuZyBlaW5lcyBGQVEtQXJ0aWtlbCBpbiBkZXIgU2VpdGVubGVpc3RlIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbCAoei5CLiBGaWVsZDEsIEZpZWxkMiwgRmllbGQzLCAuLi4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgQUNMcyBmb3IgZGlmZmVyZW50IGludGVyZmFjZXMgd2hlbiBjcmVhdGluZyBzZXJ2aWNlcy4gU2VydmljZXMgd2lsbCB0aGVuIG9ubHkgYmUgZGlzcGxheWVkIGlmIHRoZSB0aWNrZXQgdHlwZSBzdG9yZWQgaW4gdGhlIHNlcnZpY2UgaGFzIGJlZW4gc2VsZWN0ZWQuIFRoZSAiQWRkQnVsa0FDTCIgY29uc29sZSBzY3JpcHQgY2FuIGFsc28gYmUgdXNlZCB0byBjcmVhdGUgQUNMcyBmb3Igc2VydmljZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBjcmVhdGUuJ30gPQogICAgICAgICdEaWVzZSBPcHRpb24gZXJtw7ZnbGljaHQgZXMsIGRhc3MgYmVpIGRlciBTZXJ2aWNlLUVyc3RlbGx1bmcgYXV0b21hdGlzY2ggQUNMcyBmw7xyIHZlcnNjaGllZGVuZSBPYmVyZmzDpGNoZW4gZ2VuZXJpZXJ0IHdlcmRlbi4gU2VydmljZXMgd2VyZGVuIGRhbm4gbnVyIGFuZ2V6ZWlndCwgc29iYWxkIGRlciBpbSBTZXJ2aWNlIGdlc3BlaWNoZXJ0ZSBUaWNrZXR0eXAgYXVzZ2V3w6RobHQgd3VyZGUuIERhcyBLb25zb2xlbnNrcmlwdCAiQWRkQnVsa0FDTCIga2FubiBhdWNoIGbDvHIgZGllIEFDTC1FcnN0ZWxsdW5nIGbDvHIgZGllIFNlcnZpY2VzIHZlcndlbmRldCB3ZXJkZW4sIGRpZSBiZXJlaXRzIHZvciBkaWVzZXIgQWt0aXZpZXJ1bmcgZXJzdGVsbHQgd3VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG9wdGlvbiBtYWtlcyBpdCBwb3NzaWJsZSB0byBwcmVjb25maWd1cmUgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIEFDTHMuIFRoZSBhaW0gaXMgdG8gb25seSBkaXNwbGF5IHRoZSBzZXJ2aWNlcyB0aGF0IGhhdmUgYWxzbyBiZWVuIGFzc2lnbmVkIHRvIHRoZSBzZXJ2aWNlIGluIHRoZSBzZXJ2aWNlIGNhdGFsb2cuIFRvIHVzZSB0aGlzIGZ1bmN0aW9uLCBwbGVhc2UgZmlyc3QgZW5hYmxlIHRoZSAiU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHMiIG9wdGlvbi4gIkdlbmVyYXRlSW5pdGFsQUNMVG9EaXNhYmxlQWxsU2VydmljZXMiIGdlbmVyYXRlcyBhbiBBQ0wgdGhhdCBpbml0aWFsbHkgaGlkZXMgYWxsIHNlcnZpY2VzLiBUaGUgdmFsdWUgIlBvc3NpYmxlIiBvciAiUG9zc2libGVBZGQiIGNhbiBiZSBzZXQgZm9yIHRoZSBrZXkgIkNvbmZpZ0NoYW5nZSIuIFRoZSAiRGVwbG95TmV3QUNMIiBrZXkgZGVjaWRlcyB3aGV0aGVyIHRoZSBjaGFuZ2VkIEFDTCBzaG91bGQgYWxzbyBiZSBkZXBsb3llZCBpbW1lZGlhdGVseS4gIkFDTFZhbGlkSUQiICgxLCAyLCAzKSBzZXRzIHRoZSBBQ0xzIHRvIHZhbGlkLCBpbnZhbGlkIG9yIHRlbXBvcmFyaWx5IGludmFsaWQuJ30gPQogICAgICAgICdEaWVzZSBPcHRpb24gZXJtw7ZnbGljaHQgZXMsIGRpZSBhdXRvbWF0aXNjaCBnZW5lcmllcnRlbiBBQ0xzIHZvcnp1a29uZmlndXJpZXJlbi4gRGFzIFppZWwgaXN0IGVzLCBudXIgZGllIFNlcnZpY2VzIGVpbnp1YmxlbmRlbiwgZGllIGF1Y2ggaW0gU2VydmljZWthdGFsb2cgenVnZW9yZG5ldCB3dXJkZW4uIFVtIGRpZXNlIEZ1bmt0aW9uIHp1IHZlcndlbmRlbiwgbXVzcyB6dW7DpGNoc3QgZGllIEVpbnN0ZWxsdW5nICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNscyIgYWt0aXZpZXJ0IHdlcmRlbi4gIkdlbmVyYXRlSW5pdGFsQUNMVG9EaXNhYmxlQWxsU2VydmljZXMiIGVyemV1Z3QgZWluZSBBQ0wsIGRpZSBpbml0aWFsIGFsbGUgU2VydmljZXMgYXVzYmxlbmRldC4gRGllIFdlcnRlICJQb3NzaWJsZSIgKGV4a2x1c2l2IGVpbmJsZW5kZW4pIG9kZXIgIlBvc3NpYmxlQWRkIiAoenVzw6R0emxpY2ggZWluYmxlbmRlbikga8O2bm5lbiBmw7xyIGRlbiBTY2hsw7xzc2VsICJDb25maWdDaGFuZ2UiIGVpbmdlc3RlbGx0IHdlcmRlbi4gRGVyIFNjaGzDvHNzZWwgIkRlcGxveU5ld0FDTCIgZW50c2NoZWlkZXQsIG9iIGRpZSBnZcOkbmRlcnRlIEFDTCBzb2ZvcnQgaW4gQmV0cmllYiBnZW5vbW1lbiB3ZXJkZW4gc29sbC4gRGllICJBQ0xWYWxpZElEIiAoMSwgMiwgMykgc2V0enQgZGllIEfDvGx0aWdrZWl0IGRlciBBQ0wgYXVmICJnw7xsdGlnIiwgInVuZ8O8bHRpZyIgb2RlciAidW5nw7xsdGlnIHRlbXBvcsOkciIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ3VzdG9tZXJEYXNoYm9hcmQuIE1vZHVsZSBpcyByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZGl0aW9uYWwgaW5mb3JtYXRpb24nLAogICAgJ0FsbCcsCiAgICAnQ2xvc2UgdGhpcyBkaWFsb2cnLAogICAgJ0NyZWF0ZSAlcycsCiAgICAnQ3JlYXRlIFRpY2tldCcsCiAgICAnQ3JlYXRlIGEgbmV3IHRpY2tldCBmb3IgdGhpcyBzZXJ2aWNlLicsCiAgICAnQ3JlYXRlIGEgbmV3IHRpY2tldCBvZiB0eXBlICVzLicsCiAgICAnRGV0YWlscycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHNlcnZpY2UgZGVzY3JpcHRpb24gbGFuZ3VhZ2U/JywKICAgICdGQVEgYXJ0aWNsZSBvbiB0aGlzIHRvcGljJywKICAgICdGaXJzdCBSZXNwb25zZSBUaW1lJywKICAgICdGdXJ0aGVyIGluZm9ybWF0aW9uJywKICAgICdNb3JlIGRldGFpbHMnLAogICAgJ05vIGFkZGl0aW9uYWwgZGF0YSBhcmUgYXZhaWxhYmxlLicsCiAgICAnT0snLAogICAgJ1Jlc3VsdHMnLAogICAgJ1Jlc3VsdHMgZm9yICVzJywKICAgICdTZWFyY2gnLAogICAgJ1NlYXJjaCBjYXRhbG9nJywKICAgICdTZXJ2aWNlIEluZm9ybWF0aW9uJywKICAgICdTZXJ2aWNlIGhvdXJzJywKICAgICdTaG93ICVzIHN1Yi1zZXJ2aWNlKHMpJywKICAgICdTaG93IGRldGFpbHMgb2YgdGhpcyBzZXJ2aWNlLicsCiAgICAnU2hvdyBvciBoaWRlIHRoZSBjb250ZW50JywKICAgICdTb2x1dGlvbiBUaW1lJywKICAgICdTdWItU2VydmljZShzKScsCiAgICAnaG91cihzKScsCiAgICAnb1wnY2xvY2snLAogICAgJ3N1Yi1zZXJ2aWNlKHMpIGF2YWlsYWJsZScsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/es_ServiceCatalog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX1NlcnZpY2VDYXRhbG9nOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogVGlsZVNlcnZpY2VDYXRhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGRldGFpbHMgb2YgdGhpcyBzZXJ2aWNlLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5TZXJ2aWNlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcml0aWNhbGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIGRlcGVuZHMgb24gdGhlIGZvbGxvd2luZyB0aWNrZXQgdHlwZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGRlc3RpbmF0aW9uIHF1ZXVlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGRlZmF1bHQgc2VydmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgbm90IHByZXNlbnQgb3IgZW5hYmxlZCBvbiB0aGUgc3lzdGVtLiBUaGlzIHNlcnZpY2UgZGVzY3JpcHRpb24gY291bGQgYmUgZGVsZXRlZCBpZiBpdCBpcyBub3QgbmVlZGVkIGFueW1vcmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVtb3ZlIFNlcnZpY2UgRGVzY3JpcHRpb24gTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIG5ldyBzZXJ2aWNlIGRlc2NyaXB0aW9uIGxhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wdGlvbiBSZWZlcmVuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBvcHRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpdGhpbiB0aGUgU2VydmljZUNhdGFsb2d1ZSB0aWxlIGluIHRoZSBjdXN0b21lciBkYXNoYm9hcmQsIGl0IGlzIHBvc3NpYmxlIHRvIHNob3cgdGlja2V0IHR5cGVzIGZvciBwcmVjb25maWd1cmVkIHRpY2tldCBjcmVhdGlvbiBpbnNpZGUgdGhlIHNlcnZpY2UgZGVzY3JpcHRpb24uIEZ1cnRoZXJtb3JlLCBpdCBpcyBwb3NzaWJsZSB0byByZXN0cmljdCB0aGUgc2VydmljZXMgZm9yIG90aGVyIHNjcmVlbnMgdXNpbmcgdGhlIHRpY2tldCB0eXBlcyBzZXQgaGVyZS4gSWYgeW91IHdpc2ggdG8gZG8gdGhpcywgcGxlYXNlIGFjdGl2YXRlIHRoZSBvcHRpb25zICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNscyIgYW5kICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNsczo6T3B0aW9ucyIgaW4gdGhlIE9UT0JPIHN5c3RlbSBjb25maWd1cmF0aW9uLiBUaGUgcmVzdHJpY3Rpb24gaXMgbWFkZSB2aWEgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgQUNMcywgd2hpY2ggY2FuIGJlIHZpZXdlZCB1bmRlciAiQWRtaW4gLT4gQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTCkiLiBJZiBuZWNlc3NhcnksIHBsZWFzZSBhZGp1c3QgdGhlIG9wdGlvbiAiU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHM6Ok9wdGlvbnMiIGFjY29yZGluZyB0byB5b3VyIHJlcXVpcmVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB3ZSB3b3JrIHNlcnZpY2UtYmFzZWQsIHdlIGRvIG5vdCB3YW50IHRvIG9mZmVyIHRoZSBjdXN0b21lciBhIGNob2ljZSBvZiBxdWV1ZXMgaW4gdGhlIGN1c3RvbWVyIHBvcnRhbCB3aGVuIGNyZWF0aW5nIGEgdGlja2V0LCBidXQgZGVjaWRlIG9uIHRoZSBiYXNpcyBvZiB0aGUgc2VydmljZSBpbnRvIHdoaWNoIHF1ZXVlIChvciB3aGljaCB0ZWFtIG9mIGFnZW50cykgdGhlIHRpY2tldCBzaG91bGQgYmUgcHJvY2Vzc2VkIGZpcnN0LiBJbiBvcmRlciB0byB1c2UgdGhpcyBvcHRpb24gc2Vuc2libHksIHBsZWFzZSBkZWFjdGl2YXRlIHRoZSBvcHRpb24gIlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0TWVzc2FnZSMjI1F1ZXVlIiBhbmQgc2V0IGEgc2Vuc2libGUgZGVmYXVsdCBxdWV1ZSBpbiB0aGUgb3B0aW9uICJUaWNrZXQ6OkZyb250ZW5kOjpDdXN0b21lclRpY2tldE1lc3NhZ2UjIyNRdWV1ZURlZmF1bHQiLiBBcyBzb29uIGFzIHlvdSBzZXQgYSAiVGlja2V0IGRlc3RpbmF0aW9uIHF1ZXVlIiBoZXJlIGluIHRoZSBzZXJ2aWNlLCB0aGUgdGlja2V0IHdpbGwgaW1tZWRpYXRlbHkgYmUgY3JlYXRlZCBpbiB0aGlzIHF1ZXVlLiBJZiB0aGUgZmllbGQgcmVtYWlucyBlbXB0eSwgdGhlIGRlZmF1bHQgcXVldWUgY29uZmlndXJlZCBhYm92ZSB3aWxsIGJlIHVzZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgeW91IGRvIG5vdCBhc3NpZ24gc2VydmljZXMgdG8gY3VzdG9tZXJzIG9yIGNvbXBhbmllcyBpbmRpdmlkdWFsbHksIGJ1dCBhbGwgc2VydmljZXMgYXJlIGluaXRpYWxseSBvZmZlcmVkIHRvIHlvdXIgY3VzdG9tZXJzIGZvciBzZWxlY3Rpb24sIHRoZSBzdGVwIG9mIHJlbGVhc2luZyBlYWNoIHNlcnZpY2UgYXMgYSAiZGVmYXVsdCIgc2VydmljZSB1bmRlciAiQWRtaW4gLT4gQ3VzdG9tZXIgdXNlciA8LT4gU2VydmljZSIgKG9yICJDdXN0b21lciA8LT4gU2VydmljZSIpIGNhbiBiZSBieXBhc3NlZCBoZXJlLiBPZiBjb3Vyc2UsIGluIHRoZSBuZXh0IHN0ZXAgaXQgaXMgcG9zc2libGUgdG8gcmVzdHJpY3QgdGhlIHNlcnZpY2VzIHZpYSBBQ0xzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUsIHRoZXJlIGlzIHRoZSBwb3NzaWJpbGl0eSB0byBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZSB0aGUgY29ycmVjdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIGJhY2tncm91bmQgYmFzZWQgb24gdGhlIGR5bmFtaWMgZmllbGQgIklUU01Dcml0aWNhbGl0eSIgYW5kICJJVFNNSW1wYWN0Ii4gUGxlYXNlIGFjdGl2YXRlIHRoZSBvcHRpb24gIlRpY2tldDo6RXZlbnRNb2R1bGVQb3N0IyMjOTcwMC1TZXREeW5hbWljRmllbGRDcml0aWNhbGl0eUZyb21TZXJ2aWNlIiBhbmQgdGhlIG9wdGlvbiAiVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyM5ODAwLVNldFByaW9yaXR5RnJvbUNyaXRpY2FsaXR5QW5kSW1wYWN0TWF0cml4Ii4gSW4gdGhlIG5leHQgc3RlcCwgeW91IGhhdmUgdGhlIHBvc3NpYmlsaXR5IHVzaW5nICJBZG1pbiAtPiBDcml0aWNhbGl0eSDihpQgSW1wYWN0IOKGlCBQcmlvcml0eSIgdG8gc2V0IHRoZSBwcmlvcml0eSB1c2luZyBhIG1hdHJpeC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkcyB0byBmYWNpbGl0YXRlIHRoZSBzZWFyY2ggZm9yIHNlcnZpY2VzIHdpdGhpbiB0aGUgc2VydmljZSBjYXRhbG9nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgZGVzY3JpcHRpb25zIChzaG9ydCAmIGxvbmcpIHNwZWNpZmllZCBieSBVc2VyIExhbmd1YWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3J0IHN1bW1hcnkgb2YgdGhlIHNlcnZpY2UsIG1haW5seSB1c2VkIGluIHRoZSBDdXN0b21lckRhc2hib2FyZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNjcmlwdGlvbiBvZiB0aGUgc2VydmljZS4gU2NyZWVuc2hvdHMgYW5kIHRhYmxlcyBhcmUgYWxzbyBhbGxvd2VkLiBQbGVhc2UgZW5zdXJlIHRoZSBjb3JyZWN0IHdpZHRoIG9mIHRoZSBpbWFnZSBmb3Igc2NyZWVuc2hvdHMuIFRoaXMgY2FuIGJlIGFkanVzdGVkIGluIHRoZSBja2VkaXRvciBhZnRlciB1cGxvYWRpbmcgdGhlIHNjcmVlbnNob3QuIEEgd2lkdGggb2YgNjAwcHggaGFzIHByb3ZlbiB0byBiZSB1c2VmdWwgb3IgeW91IGNhbiBjb25maWd1cmUgYSAibWF4LXdpZHRoIiBvZiA5NSUgdW5kZXIgQWR2YW5jZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIG1vcmUgc2VydmljZSBjYXRhbG9nIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGFkZGluZyBmdXJ0aGVyIGZpZWxkcyBoZXJlIGluIHRoZSBzZXJ2aWNlIGNhdGFsb2cgYXQgYW55IHRpbWUuIFRvIGRvIHRoaXMsIHBsZWFzZSBnbyB0byAiQWRtaW4gLT4gRHluYW1pY0ZpZWxkcyIgYW5kIGNyZWF0ZSB0aGUgbmV3IGZpZWxkIG9mIHRoZSBvYmplY3QgdHlwZSAiU2VydmljZSIuIFlvdSBjYW4gdGhlbiBhY3RpdmF0ZSB0aGUgZmllbGQgZm9yIHRoZSBjdXN0b21lciBkYXNoYm9hcmQgdW5kZXIgIkFkbWluIC0+IER5bmFtaWNGaWVsZCBTY3JlZW5zIiBieSBhc3NpZ25pbmcgaXQgdW5kZXIgIkN1c3RvbWVyRGFzaGJvYXJkVGlsZSBTZXJ2aWNlQ2F0YWxvZyIuJ30gPQogICAgICAgICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTVNMQVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NMQSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmltdW0gVGltZSBCZXR3ZWVuIEluY2lkZW50cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NvY2lhdGVkIFNlcnZpY2VzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01TZXJ2aWNlWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IGluY2lkZW50IHN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc29jaWF0ZWQgU0xBcyd9ID0gJyc7CgogICAgIyBKUyBUZW1wbGF0ZTogVGlsZVNlcnZpY2VDYXRhbG9nQ29udGFpbmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYSBuZXcgdGlja2V0IGZvciB0aGlzIHNlcnZpY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICVzIHN1Yi1zZXJ2aWNlKHMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vcmUgZGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWItU2VydmljZShzKSd9ID0gJyc7CgogICAgIyBKUyBUZW1wbGF0ZTogVGlsZVNlcnZpY2VDYXRhbG9nRGV0YWlsZWQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3N1Yi1zZXJ2aWNlKHMpIGF2YWlsYWJsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYSBuZXcgdGlja2V0IG9mIHR5cGUgJXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlIG9uIHRoaXMgdG9waWMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkaXRpb25hbCBpbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIGhvdXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29cJ2Nsb2NrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFkZGl0aW9uYWwgZGF0YSBhcmUgYXZhaWxhYmxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdXJ0aGVyIGluZm9ybWF0aW9uJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBUaWxlU2VydmljZUNhdGFsb2dNb2RhbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNhdGFsb2cnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyVGlsZVNlcnZpY2VDYXRhbG9nLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNjcmlwdGlvbiBub3QgYXZhaWxhYmxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTVNlcnZpY2Vab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTZXJ2aWNlSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2VJRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogQ29yZS5BZ2VudC5BZG1pbi5TZXJ2aWNlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgc2VydmljZSBkZXNjcmlwdGlvbiBsYW5ndWFnZT8nfSA9CiAgICAgICAgJyc7CgogICAgIyBKUyBGaWxlOiBDb3JlLkN1c3RvbWVyLlRpbGVTZXJ2aWNlQ2F0YWxvZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBmb3IgJXMnfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRpdGlvbmFsIHNldHRpbmdzIGZvciB0aGUgc2VydmljZSBjYXRhbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lclRpbGVTZXJ2aWNlQ2F0YWxvZyBBSkFYIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIHNlcnZpY2UgY2F0YWxvZyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgcmVnaXN0cmF0aW9uLiBDdXJyZW50bHksIHRoZSBjcml0aWNhbGl0eSBvZiB0aGUgc2VydmljZSBjYW4gYWxzbyBiZSBzZXQgaW4gdGhlIHNlcnZpY2UsIGJ1dCB0aGlzIGhhcyBubyBlZmZlY3QuIFRoZXJlZm9yZSwgdGhpcyBldmVudCBtb2R1bGUgaGFzIGJlZW4gaW1wbGVtZW50ZWQgdGhhdCBhdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdGhlIER5bmFtaWNGaWVsZCBDcml0aWNhbGl0eSBpbiBhIHRpY2tldCBhcyBzb29uIGFzIGEgc2VydmljZSBoYXMgYmVlbiBhc3NpZ25lZC4gUGxlYXNlIGFjdGl2YXRlIHRoZSBTeXNDb25maWcgb3B0aW9uIFNldFByaW9yaXR5RnJvbUNyaXRpY2FsaXR5QW5kSW1wYWN0TWF0cml4IHRvIHNldCB0aGUgcHJpb3JpdHkgaW4gdGhlIG5leHQgc3RlcCBiYXNlZCBhbiBDcml0aWNhbGl0eSBhbmQgSW1wYWN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSByZWdpc3RyYXRpb24uIEN1cnJlbnRseSwgdGhlIGNyaXRpY2FsaXR5IG9mIHRoZSBzZXJ2aWNlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgc2VydmljZSwgYnV0IHRoaXMgaGFzIG5vIGVmZmVjdC4gVGhlcmVmb3JlLCB0aGlzIGV2ZW50IG1vZHVsZSBoYXMgYmVlbiBpbXBsZW1lbnRlZCB0aGF0IGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgcHJpb3JpdHkgcmVnYXJkaW5nIENyaXRpY2FsaXR5IGFuZCBJbXBhY3QgaW4gYSB0aWNrZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBzZXJ2aWNlcyB3aXRoIHRoZSBmb2xsb3dpbmcgdGlja2V0IHR5cGUgbGFzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIEZBUSBmaWVsZCB0aGF0IHNob3VsZCBiZSB1c2VkIGFzIHRoZSBkZXNjcmlwdGlvbiBvZiBhbiBGQVEgYXJ0aWNsZSBpbiB0aGUgc2lkZWJhciAoZS5nLiBGaWVsZDEsIEZpZWxkMiwgRmllbGQzLi4uKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgQUNMcyBmb3IgZGlmZmVyZW50IGludGVyZmFjZXMgd2hlbiBjcmVhdGluZyBzZXJ2aWNlcy4gU2VydmljZXMgd2lsbCB0aGVuIG9ubHkgYmUgZGlzcGxheWVkIGlmIHRoZSB0aWNrZXQgdHlwZSBzdG9yZWQgaW4gdGhlIHNlcnZpY2UgaGFzIGJlZW4gc2VsZWN0ZWQuIFRoZSAiQWRkQnVsa0FDTCIgY29uc29sZSBzY3JpcHQgY2FuIGFsc28gYmUgdXNlZCB0byBjcmVhdGUgQUNMcyBmb3Igc2VydmljZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBjcmVhdGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBvcHRpb24gbWFrZXMgaXQgcG9zc2libGUgdG8gcHJlY29uZmlndXJlIHRoZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBBQ0xzLiBUaGUgYWltIGlzIHRvIG9ubHkgZGlzcGxheSB0aGUgc2VydmljZXMgdGhhdCBoYXZlIGFsc28gYmVlbiBhc3NpZ25lZCB0byB0aGUgc2VydmljZSBpbiB0aGUgc2VydmljZSBjYXRhbG9nLiBUbyB1c2UgdGhpcyBmdW5jdGlvbiwgcGxlYXNlIGZpcnN0IGVuYWJsZSB0aGUgIlNlcnZpY2VDYXRhbG9nOjpDcmVhdGVUeXBlU2VydmljZVJlbGF0ZWRBY2xzIiBvcHRpb24uICJHZW5lcmF0ZUluaXRhbEFDTFRvRGlzYWJsZUFsbFNlcnZpY2VzIiBnZW5lcmF0ZXMgYW4gQUNMIHRoYXQgaW5pdGlhbGx5IGhpZGVzIGFsbCBzZXJ2aWNlcy4gVGhlIHZhbHVlICJQb3NzaWJsZSIgb3IgIlBvc3NpYmxlQWRkIiBjYW4gYmUgc2V0IGZvciB0aGUga2V5ICJDb25maWdDaGFuZ2UiLiBUaGUgIkRlcGxveU5ld0FDTCIga2V5IGRlY2lkZXMgd2hldGhlciB0aGUgY2hhbmdlZCBBQ0wgc2hvdWxkIGFsc28gYmUgZGVwbG95ZWQgaW1tZWRpYXRlbHkuICJBQ0xWYWxpZElEIiAoMSwgMiwgMykgc2V0cyB0aGUgQUNMcyB0byB2YWxpZCwgaW52YWxpZCBvciB0ZW1wb3JhcmlseSBpbnZhbGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ3VzdG9tZXJEYXNoYm9hcmQuIE1vZHVsZSBpcyByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZGl0aW9uYWwgaW5mb3JtYXRpb24nLAogICAgJ0FsbCcsCiAgICAnQ2xvc2UgdGhpcyBkaWFsb2cnLAogICAgJ0NyZWF0ZSAlcycsCiAgICAnQ3JlYXRlIFRpY2tldCcsCiAgICAnQ3JlYXRlIGEgbmV3IHRpY2tldCBmb3IgdGhpcyBzZXJ2aWNlLicsCiAgICAnQ3JlYXRlIGEgbmV3IHRpY2tldCBvZiB0eXBlICVzLicsCiAgICAnRGV0YWlscycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHNlcnZpY2UgZGVzY3JpcHRpb24gbGFuZ3VhZ2U/JywKICAgICdGQVEgYXJ0aWNsZSBvbiB0aGlzIHRvcGljJywKICAgICdGaXJzdCBSZXNwb25zZSBUaW1lJywKICAgICdGdXJ0aGVyIGluZm9ybWF0aW9uJywKICAgICdNb3JlIGRldGFpbHMnLAogICAgJ05vIGFkZGl0aW9uYWwgZGF0YSBhcmUgYXZhaWxhYmxlLicsCiAgICAnT0snLAogICAgJ1Jlc3VsdHMnLAogICAgJ1Jlc3VsdHMgZm9yICVzJywKICAgICdTZWFyY2gnLAogICAgJ1NlYXJjaCBjYXRhbG9nJywKICAgICdTZXJ2aWNlIEluZm9ybWF0aW9uJywKICAgICdTZXJ2aWNlIGhvdXJzJywKICAgICdTaG93ICVzIHN1Yi1zZXJ2aWNlKHMpJywKICAgICdTaG93IGRldGFpbHMgb2YgdGhpcyBzZXJ2aWNlLicsCiAgICAnU2hvdyBvciBoaWRlIHRoZSBjb250ZW50JywKICAgICdTb2x1dGlvbiBUaW1lJywKICAgICdTdWItU2VydmljZShzKScsCiAgICAnaG91cihzKScsCiAgICAnb1wnY2xvY2snLAogICAgJ3N1Yi1zZXJ2aWNlKHMpIGF2YWlsYWJsZScsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/es_CO_ServiceCatalog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX0NPX1NlcnZpY2VDYXRhbG9nOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogVGlsZVNlcnZpY2VDYXRhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGRldGFpbHMgb2YgdGhpcyBzZXJ2aWNlLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5TZXJ2aWNlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcml0aWNhbGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIGRlcGVuZHMgb24gdGhlIGZvbGxvd2luZyB0aWNrZXQgdHlwZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGRlc3RpbmF0aW9uIHF1ZXVlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGRlZmF1bHQgc2VydmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgbm90IHByZXNlbnQgb3IgZW5hYmxlZCBvbiB0aGUgc3lzdGVtLiBUaGlzIHNlcnZpY2UgZGVzY3JpcHRpb24gY291bGQgYmUgZGVsZXRlZCBpZiBpdCBpcyBub3QgbmVlZGVkIGFueW1vcmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVtb3ZlIFNlcnZpY2UgRGVzY3JpcHRpb24gTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIG5ldyBzZXJ2aWNlIGRlc2NyaXB0aW9uIGxhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wdGlvbiBSZWZlcmVuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBvcHRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpdGhpbiB0aGUgU2VydmljZUNhdGFsb2d1ZSB0aWxlIGluIHRoZSBjdXN0b21lciBkYXNoYm9hcmQsIGl0IGlzIHBvc3NpYmxlIHRvIHNob3cgdGlja2V0IHR5cGVzIGZvciBwcmVjb25maWd1cmVkIHRpY2tldCBjcmVhdGlvbiBpbnNpZGUgdGhlIHNlcnZpY2UgZGVzY3JpcHRpb24uIEZ1cnRoZXJtb3JlLCBpdCBpcyBwb3NzaWJsZSB0byByZXN0cmljdCB0aGUgc2VydmljZXMgZm9yIG90aGVyIHNjcmVlbnMgdXNpbmcgdGhlIHRpY2tldCB0eXBlcyBzZXQgaGVyZS4gSWYgeW91IHdpc2ggdG8gZG8gdGhpcywgcGxlYXNlIGFjdGl2YXRlIHRoZSBvcHRpb25zICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNscyIgYW5kICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNsczo6T3B0aW9ucyIgaW4gdGhlIE9UT0JPIHN5c3RlbSBjb25maWd1cmF0aW9uLiBUaGUgcmVzdHJpY3Rpb24gaXMgbWFkZSB2aWEgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgQUNMcywgd2hpY2ggY2FuIGJlIHZpZXdlZCB1bmRlciAiQWRtaW4gLT4gQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTCkiLiBJZiBuZWNlc3NhcnksIHBsZWFzZSBhZGp1c3QgdGhlIG9wdGlvbiAiU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHM6Ok9wdGlvbnMiIGFjY29yZGluZyB0byB5b3VyIHJlcXVpcmVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB3ZSB3b3JrIHNlcnZpY2UtYmFzZWQsIHdlIGRvIG5vdCB3YW50IHRvIG9mZmVyIHRoZSBjdXN0b21lciBhIGNob2ljZSBvZiBxdWV1ZXMgaW4gdGhlIGN1c3RvbWVyIHBvcnRhbCB3aGVuIGNyZWF0aW5nIGEgdGlja2V0LCBidXQgZGVjaWRlIG9uIHRoZSBiYXNpcyBvZiB0aGUgc2VydmljZSBpbnRvIHdoaWNoIHF1ZXVlIChvciB3aGljaCB0ZWFtIG9mIGFnZW50cykgdGhlIHRpY2tldCBzaG91bGQgYmUgcHJvY2Vzc2VkIGZpcnN0LiBJbiBvcmRlciB0byB1c2UgdGhpcyBvcHRpb24gc2Vuc2libHksIHBsZWFzZSBkZWFjdGl2YXRlIHRoZSBvcHRpb24gIlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0TWVzc2FnZSMjI1F1ZXVlIiBhbmQgc2V0IGEgc2Vuc2libGUgZGVmYXVsdCBxdWV1ZSBpbiB0aGUgb3B0aW9uICJUaWNrZXQ6OkZyb250ZW5kOjpDdXN0b21lclRpY2tldE1lc3NhZ2UjIyNRdWV1ZURlZmF1bHQiLiBBcyBzb29uIGFzIHlvdSBzZXQgYSAiVGlja2V0IGRlc3RpbmF0aW9uIHF1ZXVlIiBoZXJlIGluIHRoZSBzZXJ2aWNlLCB0aGUgdGlja2V0IHdpbGwgaW1tZWRpYXRlbHkgYmUgY3JlYXRlZCBpbiB0aGlzIHF1ZXVlLiBJZiB0aGUgZmllbGQgcmVtYWlucyBlbXB0eSwgdGhlIGRlZmF1bHQgcXVldWUgY29uZmlndXJlZCBhYm92ZSB3aWxsIGJlIHVzZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgeW91IGRvIG5vdCBhc3NpZ24gc2VydmljZXMgdG8gY3VzdG9tZXJzIG9yIGNvbXBhbmllcyBpbmRpdmlkdWFsbHksIGJ1dCBhbGwgc2VydmljZXMgYXJlIGluaXRpYWxseSBvZmZlcmVkIHRvIHlvdXIgY3VzdG9tZXJzIGZvciBzZWxlY3Rpb24sIHRoZSBzdGVwIG9mIHJlbGVhc2luZyBlYWNoIHNlcnZpY2UgYXMgYSAiZGVmYXVsdCIgc2VydmljZSB1bmRlciAiQWRtaW4gLT4gQ3VzdG9tZXIgdXNlciA8LT4gU2VydmljZSIgKG9yICJDdXN0b21lciA8LT4gU2VydmljZSIpIGNhbiBiZSBieXBhc3NlZCBoZXJlLiBPZiBjb3Vyc2UsIGluIHRoZSBuZXh0IHN0ZXAgaXQgaXMgcG9zc2libGUgdG8gcmVzdHJpY3QgdGhlIHNlcnZpY2VzIHZpYSBBQ0xzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUsIHRoZXJlIGlzIHRoZSBwb3NzaWJpbGl0eSB0byBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZSB0aGUgY29ycmVjdCB0aWNrZXQgcHJpb3JpdHkgaW4gdGhlIGJhY2tncm91bmQgYmFzZWQgb24gdGhlIGR5bmFtaWMgZmllbGQgIklUU01Dcml0aWNhbGl0eSIgYW5kICJJVFNNSW1wYWN0Ii4gUGxlYXNlIGFjdGl2YXRlIHRoZSBvcHRpb24gIlRpY2tldDo6RXZlbnRNb2R1bGVQb3N0IyMjOTcwMC1TZXREeW5hbWljRmllbGRDcml0aWNhbGl0eUZyb21TZXJ2aWNlIiBhbmQgdGhlIG9wdGlvbiAiVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyM5ODAwLVNldFByaW9yaXR5RnJvbUNyaXRpY2FsaXR5QW5kSW1wYWN0TWF0cml4Ii4gSW4gdGhlIG5leHQgc3RlcCwgeW91IGhhdmUgdGhlIHBvc3NpYmlsaXR5IHVzaW5nICJBZG1pbiAtPiBDcml0aWNhbGl0eSDihpQgSW1wYWN0IOKGlCBQcmlvcml0eSIgdG8gc2V0IHRoZSBwcmlvcml0eSB1c2luZyBhIG1hdHJpeC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkcyB0byBmYWNpbGl0YXRlIHRoZSBzZWFyY2ggZm9yIHNlcnZpY2VzIHdpdGhpbiB0aGUgc2VydmljZSBjYXRhbG9nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgZGVzY3JpcHRpb25zIChzaG9ydCAmIGxvbmcpIHNwZWNpZmllZCBieSBVc2VyIExhbmd1YWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3J0IHN1bW1hcnkgb2YgdGhlIHNlcnZpY2UsIG1haW5seSB1c2VkIGluIHRoZSBDdXN0b21lckRhc2hib2FyZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNjcmlwdGlvbiBvZiB0aGUgc2VydmljZS4gU2NyZWVuc2hvdHMgYW5kIHRhYmxlcyBhcmUgYWxzbyBhbGxvd2VkLiBQbGVhc2UgZW5zdXJlIHRoZSBjb3JyZWN0IHdpZHRoIG9mIHRoZSBpbWFnZSBmb3Igc2NyZWVuc2hvdHMuIFRoaXMgY2FuIGJlIGFkanVzdGVkIGluIHRoZSBja2VkaXRvciBhZnRlciB1cGxvYWRpbmcgdGhlIHNjcmVlbnNob3QuIEEgd2lkdGggb2YgNjAwcHggaGFzIHByb3ZlbiB0byBiZSB1c2VmdWwgb3IgeW91IGNhbiBjb25maWd1cmUgYSAibWF4LXdpZHRoIiBvZiA5NSUgdW5kZXIgQWR2YW5jZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIG1vcmUgc2VydmljZSBjYXRhbG9nIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGFkZGluZyBmdXJ0aGVyIGZpZWxkcyBoZXJlIGluIHRoZSBzZXJ2aWNlIGNhdGFsb2cgYXQgYW55IHRpbWUuIFRvIGRvIHRoaXMsIHBsZWFzZSBnbyB0byAiQWRtaW4gLT4gRHluYW1pY0ZpZWxkcyIgYW5kIGNyZWF0ZSB0aGUgbmV3IGZpZWxkIG9mIHRoZSBvYmplY3QgdHlwZSAiU2VydmljZSIuIFlvdSBjYW4gdGhlbiBhY3RpdmF0ZSB0aGUgZmllbGQgZm9yIHRoZSBjdXN0b21lciBkYXNoYm9hcmQgdW5kZXIgIkFkbWluIC0+IER5bmFtaWNGaWVsZCBTY3JlZW5zIiBieSBhc3NpZ25pbmcgaXQgdW5kZXIgIkN1c3RvbWVyRGFzaGJvYXJkVGlsZSBTZXJ2aWNlQ2F0YWxvZyIuJ30gPQogICAgICAgICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTVNMQVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NMQSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmltdW0gVGltZSBCZXR3ZWVuIEluY2lkZW50cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NvY2lhdGVkIFNlcnZpY2VzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01TZXJ2aWNlWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IGluY2lkZW50IHN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc29jaWF0ZWQgU0xBcyd9ID0gJyc7CgogICAgIyBKUyBUZW1wbGF0ZTogVGlsZVNlcnZpY2VDYXRhbG9nQ29udGFpbmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYSBuZXcgdGlja2V0IGZvciB0aGlzIHNlcnZpY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICVzIHN1Yi1zZXJ2aWNlKHMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vcmUgZGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWItU2VydmljZShzKSd9ID0gJyc7CgogICAgIyBKUyBUZW1wbGF0ZTogVGlsZVNlcnZpY2VDYXRhbG9nRGV0YWlsZWQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3N1Yi1zZXJ2aWNlKHMpIGF2YWlsYWJsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYSBuZXcgdGlja2V0IG9mIHR5cGUgJXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlIG9uIHRoaXMgdG9waWMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkaXRpb25hbCBpbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIGhvdXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29cJ2Nsb2NrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFkZGl0aW9uYWwgZGF0YSBhcmUgYXZhaWxhYmxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdXJ0aGVyIGluZm9ybWF0aW9uJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBUaWxlU2VydmljZUNhdGFsb2dNb2RhbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNhdGFsb2cnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyVGlsZVNlcnZpY2VDYXRhbG9nLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNjcmlwdGlvbiBub3QgYXZhaWxhYmxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTVNlcnZpY2Vab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTZXJ2aWNlSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2VJRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogQ29yZS5BZ2VudC5BZG1pbi5TZXJ2aWNlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgc2VydmljZSBkZXNjcmlwdGlvbiBsYW5ndWFnZT8nfSA9CiAgICAgICAgJyc7CgogICAgIyBKUyBGaWxlOiBDb3JlLkN1c3RvbWVyLlRpbGVTZXJ2aWNlQ2F0YWxvZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBmb3IgJXMnfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRpdGlvbmFsIHNldHRpbmdzIGZvciB0aGUgc2VydmljZSBjYXRhbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lclRpbGVTZXJ2aWNlQ2F0YWxvZyBBSkFYIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIHNlcnZpY2UgY2F0YWxvZyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgcmVnaXN0cmF0aW9uLiBDdXJyZW50bHksIHRoZSBjcml0aWNhbGl0eSBvZiB0aGUgc2VydmljZSBjYW4gYWxzbyBiZSBzZXQgaW4gdGhlIHNlcnZpY2UsIGJ1dCB0aGlzIGhhcyBubyBlZmZlY3QuIFRoZXJlZm9yZSwgdGhpcyBldmVudCBtb2R1bGUgaGFzIGJlZW4gaW1wbGVtZW50ZWQgdGhhdCBhdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdGhlIER5bmFtaWNGaWVsZCBDcml0aWNhbGl0eSBpbiBhIHRpY2tldCBhcyBzb29uIGFzIGEgc2VydmljZSBoYXMgYmVlbiBhc3NpZ25lZC4gUGxlYXNlIGFjdGl2YXRlIHRoZSBTeXNDb25maWcgb3B0aW9uIFNldFByaW9yaXR5RnJvbUNyaXRpY2FsaXR5QW5kSW1wYWN0TWF0cml4IHRvIHNldCB0aGUgcHJpb3JpdHkgaW4gdGhlIG5leHQgc3RlcCBiYXNlZCBhbiBDcml0aWNhbGl0eSBhbmQgSW1wYWN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSByZWdpc3RyYXRpb24uIEN1cnJlbnRseSwgdGhlIGNyaXRpY2FsaXR5IG9mIHRoZSBzZXJ2aWNlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgc2VydmljZSwgYnV0IHRoaXMgaGFzIG5vIGVmZmVjdC4gVGhlcmVmb3JlLCB0aGlzIGV2ZW50IG1vZHVsZSBoYXMgYmVlbiBpbXBsZW1lbnRlZCB0aGF0IGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgcHJpb3JpdHkgcmVnYXJkaW5nIENyaXRpY2FsaXR5IGFuZCBJbXBhY3QgaW4gYSB0aWNrZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBzZXJ2aWNlcyB3aXRoIHRoZSBmb2xsb3dpbmcgdGlja2V0IHR5cGUgbGFzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIEZBUSBmaWVsZCB0aGF0IHNob3VsZCBiZSB1c2VkIGFzIHRoZSBkZXNjcmlwdGlvbiBvZiBhbiBGQVEgYXJ0aWNsZSBpbiB0aGUgc2lkZWJhciAoZS5nLiBGaWVsZDEsIEZpZWxkMiwgRmllbGQzLi4uKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgQUNMcyBmb3IgZGlmZmVyZW50IGludGVyZmFjZXMgd2hlbiBjcmVhdGluZyBzZXJ2aWNlcy4gU2VydmljZXMgd2lsbCB0aGVuIG9ubHkgYmUgZGlzcGxheWVkIGlmIHRoZSB0aWNrZXQgdHlwZSBzdG9yZWQgaW4gdGhlIHNlcnZpY2UgaGFzIGJlZW4gc2VsZWN0ZWQuIFRoZSAiQWRkQnVsa0FDTCIgY29uc29sZSBzY3JpcHQgY2FuIGFsc28gYmUgdXNlZCB0byBjcmVhdGUgQUNMcyBmb3Igc2VydmljZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBjcmVhdGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBvcHRpb24gbWFrZXMgaXQgcG9zc2libGUgdG8gcHJlY29uZmlndXJlIHRoZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBBQ0xzLiBUaGUgYWltIGlzIHRvIG9ubHkgZGlzcGxheSB0aGUgc2VydmljZXMgdGhhdCBoYXZlIGFsc28gYmVlbiBhc3NpZ25lZCB0byB0aGUgc2VydmljZSBpbiB0aGUgc2VydmljZSBjYXRhbG9nLiBUbyB1c2UgdGhpcyBmdW5jdGlvbiwgcGxlYXNlIGZpcnN0IGVuYWJsZSB0aGUgIlNlcnZpY2VDYXRhbG9nOjpDcmVhdGVUeXBlU2VydmljZVJlbGF0ZWRBY2xzIiBvcHRpb24uICJHZW5lcmF0ZUluaXRhbEFDTFRvRGlzYWJsZUFsbFNlcnZpY2VzIiBnZW5lcmF0ZXMgYW4gQUNMIHRoYXQgaW5pdGlhbGx5IGhpZGVzIGFsbCBzZXJ2aWNlcy4gVGhlIHZhbHVlICJQb3NzaWJsZSIgb3IgIlBvc3NpYmxlQWRkIiBjYW4gYmUgc2V0IGZvciB0aGUga2V5ICJDb25maWdDaGFuZ2UiLiBUaGUgIkRlcGxveU5ld0FDTCIga2V5IGRlY2lkZXMgd2hldGhlciB0aGUgY2hhbmdlZCBBQ0wgc2hvdWxkIGFsc28gYmUgZGVwbG95ZWQgaW1tZWRpYXRlbHkuICJBQ0xWYWxpZElEIiAoMSwgMiwgMykgc2V0cyB0aGUgQUNMcyB0byB2YWxpZCwgaW52YWxpZCBvciB0ZW1wb3JhcmlseSBpbnZhbGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ3VzdG9tZXJEYXNoYm9hcmQuIE1vZHVsZSBpcyByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZGl0aW9uYWwgaW5mb3JtYXRpb24nLAogICAgJ0FsbCcsCiAgICAnQ2xvc2UgdGhpcyBkaWFsb2cnLAogICAgJ0NyZWF0ZSAlcycsCiAgICAnQ3JlYXRlIFRpY2tldCcsCiAgICAnQ3JlYXRlIGEgbmV3IHRpY2tldCBmb3IgdGhpcyBzZXJ2aWNlLicsCiAgICAnQ3JlYXRlIGEgbmV3IHRpY2tldCBvZiB0eXBlICVzLicsCiAgICAnRGV0YWlscycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHNlcnZpY2UgZGVzY3JpcHRpb24gbGFuZ3VhZ2U/JywKICAgICdGQVEgYXJ0aWNsZSBvbiB0aGlzIHRvcGljJywKICAgICdGaXJzdCBSZXNwb25zZSBUaW1lJywKICAgICdGdXJ0aGVyIGluZm9ybWF0aW9uJywKICAgICdNb3JlIGRldGFpbHMnLAogICAgJ05vIGFkZGl0aW9uYWwgZGF0YSBhcmUgYXZhaWxhYmxlLicsCiAgICAnT0snLAogICAgJ1Jlc3VsdHMnLAogICAgJ1Jlc3VsdHMgZm9yICVzJywKICAgICdTZWFyY2gnLAogICAgJ1NlYXJjaCBjYXRhbG9nJywKICAgICdTZXJ2aWNlIEluZm9ybWF0aW9uJywKICAgICdTZXJ2aWNlIGhvdXJzJywKICAgICdTaG93ICVzIHN1Yi1zZXJ2aWNlKHMpJywKICAgICdTaG93IGRldGFpbHMgb2YgdGhpcyBzZXJ2aWNlLicsCiAgICAnU2hvdyBvciBoaWRlIHRoZSBjb250ZW50JywKICAgICdTb2x1dGlvbiBUaW1lJywKICAgICdTdWItU2VydmljZShzKScsCiAgICAnaG91cihzKScsCiAgICAnb1wnY2xvY2snLAogICAgJ3N1Yi1zZXJ2aWNlKHMpIGF2YWlsYWJsZScsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/hu_ServiceCatalog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omh1X1NlcnZpY2VDYXRhbG9nOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogVGlsZVNlcnZpY2VDYXRhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGRldGFpbHMgb2YgdGhpcyBzZXJ2aWNlLid9ID0gJ0Egc3pvbGfDoWx0YXTDoXMgcsOpc3psZXRlaW5layBtZWdqZWxlbsOtdMOpc2UuJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pblNlcnZpY2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyaXRpY2FsaXR5J30gPSAnS3JpdGlrdXNzw6FnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgZGVwZW5kcyBvbiB0aGUgZm9sbG93aW5nIHRpY2tldCB0eXBlcyd9ID0gJ0Egc3pvbGfDoWx0YXTDoXMgYSBrw7Z2ZXRrZXrFkSBqZWd5dMOtcHVzb2t0w7NsIGbDvGdnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBkZXN0aW5hdGlvbiBxdWV1ZSd9ID0gJ0plZ3kgY8OpbHbDoXLDs2xpc3TDoWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGRlZmF1bHQgc2VydmljZSd9ID0gJ8OcZ3lmw6lsIGFsYXDDqXJ0ZWxtZXpldHQgc3pvbGfDoWx0YXTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnS3VsY3NzemF2YWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBEZXNjcmlwdGlvbid9ID0gJ1N6b2xnw6FsdGF0w6FzIGxlw61yw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIG5vdCBwcmVzZW50IG9yIGVuYWJsZWQgb24gdGhlIHN5c3RlbS4gVGhpcyBzZXJ2aWNlIGRlc2NyaXB0aW9uIGNvdWxkIGJlIGRlbGV0ZWQgaWYgaXQgaXMgbm90IG5lZWRlZCBhbnltb3JlLid9ID0KICAgICAgICAnRXogYSBueWVsdiBuaW5jcyBqZWxlbiB2YWd5IG5pbmNzIGVuZ2Vkw6lseWV6dmUgYSByZW5kc3plcmVuLiBFeiBhIHN6b2xnw6FsdGF0w6FzbGXDrXLDoXMgdMO2csO2bGhldMWRLCBoYSB0w7ZiYsOpIG5pbmNzIHLDoSBzesO8a3PDqWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlbW92ZSBTZXJ2aWNlIERlc2NyaXB0aW9uIExhbmd1YWdlJ30gPSAnU3pvbGfDoWx0YXTDoXNsZcOtcsOhcy1ueWVsdiBlbHTDoXZvbMOtdMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIG5ldyBzZXJ2aWNlIGRlc2NyaXB0aW9uIGxhbmd1YWdlJ30gPSAnw5pqIHN6b2xnw6FsdGF0w6FzbGXDrXLDoXMtbnllbHYgaG96esOhYWTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wdGlvbiBSZWZlcmVuY2UnfSA9ICdCZcOhbGzDrXTDoXNvayBoaXZhdGtvesOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBvcHRpb25zJ30gPSAnQSBrw7Z2ZXRrZXrFkSBiZcOhbGzDrXTDoXNva2F0IGhhc3puw6FsaGF0amEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2l0aGluIHRoZSBTZXJ2aWNlQ2F0YWxvZ3VlIHRpbGUgaW4gdGhlIGN1c3RvbWVyIGRhc2hib2FyZCwgaXQgaXMgcG9zc2libGUgdG8gc2hvdyB0aWNrZXQgdHlwZXMgZm9yIHByZWNvbmZpZ3VyZWQgdGlja2V0IGNyZWF0aW9uIGluc2lkZSB0aGUgc2VydmljZSBkZXNjcmlwdGlvbi4gRnVydGhlcm1vcmUsIGl0IGlzIHBvc3NpYmxlIHRvIHJlc3RyaWN0IHRoZSBzZXJ2aWNlcyBmb3Igb3RoZXIgc2NyZWVucyB1c2luZyB0aGUgdGlja2V0IHR5cGVzIHNldCBoZXJlLiBJZiB5b3Ugd2lzaCB0byBkbyB0aGlzLCBwbGVhc2UgYWN0aXZhdGUgdGhlIG9wdGlvbnMgIlNlcnZpY2VDYXRhbG9nOjpDcmVhdGVUeXBlU2VydmljZVJlbGF0ZWRBY2xzIiBhbmQgIlNlcnZpY2VDYXRhbG9nOjpDcmVhdGVUeXBlU2VydmljZVJlbGF0ZWRBY2xzOjpPcHRpb25zIiBpbiB0aGUgT1RPQk8gc3lzdGVtIGNvbmZpZ3VyYXRpb24uIFRoZSByZXN0cmljdGlvbiBpcyBtYWRlIHZpYSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBBQ0xzLCB3aGljaCBjYW4gYmUgdmlld2VkIHVuZGVyICJBZG1pbiAtPiBBY2Nlc3MgQ29udHJvbCBMaXN0cyAoQUNMKSIuIElmIG5lY2Vzc2FyeSwgcGxlYXNlIGFkanVzdCB0aGUgb3B0aW9uICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNsczo6T3B0aW9ucyIgYWNjb3JkaW5nIHRvIHlvdXIgcmVxdWlyZW1lbnRzLid9ID0KICAgICAgICAnQXogw7xneWbDqWwgdmV6w6lybMWRcHVsdGrDoW4gbMOpdsWRIOKAnlNlcnZpY2VDYXRhbG9ndWXigJ0gY3NlbXDDqW4gYmVsw7xsIGxlaGV0xZFzw6lnIHZhbiBtZWdqZWxlbsOtdGVuaSBhIGplZ3l0w61wdXNva2F0IGF6IGVsxZFyZSBiZcOhbGzDrXRvdHQgamVneWzDqXRyZWhvesOhc8OhaG96IGEgc3pvbGfDoWx0YXTDoXMgbGXDrXLDoXPDoW4gYmVsw7xsLiBFemVuZmVsw7xsIGxlaGV0xZFzw6lnIHZhbiBhIHN6b2xnw6FsdGF0w6Fzb2sga29ybMOhdG96w6Fzw6FyYSBtw6FzIGvDqXBlcm55xZFrbsOpbCBheiBpdHQgYmXDoWxsw610b3R0IGplZ3l0w61wdXNvayBoYXN6bsOhbGF0w6F2YWwuIEhhIGV6dCBzemVyZXRuw6kgbWVndGVubmksIGFra29yIGFrdGl2w6FsamEgYSDigJ5TZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNsc+KAnSDDqXMgYSDigJ5TZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNsczo6T3B0aW9uc+KAnSBiZcOhbGzDrXTDoXNva2F0IGF6IE9UT0JPIHJlbmRzemVyYmXDoWxsw610w6FzYWliYW4uIEEga29ybMOhdG96w6FzIGF1dG9tYXRpa3VzYW4gZWzFkcOhbGzDrXRvdHQgQUNMLWVrZW4ga2VyZXN6dMO8bCB0w7ZydMOpbmlrLCBhbWVseWVrIGF6IOKAnkFkbWluaXN6dHLDoWNpw7Mg4oaSIEhvenrDoWbDqXLDqXMtdmV6w6lybMOpc2kgbGlzdMOhayAoQUNMKeKAnSBhbGF0dCB0ZWtpbnRoZXTFkWsgbWVnLiBIYSBzesO8a3PDqWdlcywgYWtrb3Igw6FsbMOtdHNhIGJlIGEg4oCeU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHM6Ok9wdGlvbnPigJ0gYmXDoWxsw610w6FzdCBheiBpZ8OpbnllaW5layBtZWdmZWxlbMWRZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHdlIHdvcmsgc2VydmljZS1iYXNlZCwgd2UgZG8gbm90IHdhbnQgdG8gb2ZmZXIgdGhlIGN1c3RvbWVyIGEgY2hvaWNlIG9mIHF1ZXVlcyBpbiB0aGUgY3VzdG9tZXIgcG9ydGFsIHdoZW4gY3JlYXRpbmcgYSB0aWNrZXQsIGJ1dCBkZWNpZGUgb24gdGhlIGJhc2lzIG9mIHRoZSBzZXJ2aWNlIGludG8gd2hpY2ggcXVldWUgKG9yIHdoaWNoIHRlYW0gb2YgYWdlbnRzKSB0aGUgdGlja2V0IHNob3VsZCBiZSBwcm9jZXNzZWQgZmlyc3QuIEluIG9yZGVyIHRvIHVzZSB0aGlzIG9wdGlvbiBzZW5zaWJseSwgcGxlYXNlIGRlYWN0aXZhdGUgdGhlIG9wdGlvbiAiVGlja2V0OjpGcm9udGVuZDo6Q3VzdG9tZXJUaWNrZXRNZXNzYWdlIyMjUXVldWUiIGFuZCBzZXQgYSBzZW5zaWJsZSBkZWZhdWx0IHF1ZXVlIGluIHRoZSBvcHRpb24gIlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0TWVzc2FnZSMjI1F1ZXVlRGVmYXVsdCIuIEFzIHNvb24gYXMgeW91IHNldCBhICJUaWNrZXQgZGVzdGluYXRpb24gcXVldWUiIGhlcmUgaW4gdGhlIHNlcnZpY2UsIHRoZSB0aWNrZXQgd2lsbCBpbW1lZGlhdGVseSBiZSBjcmVhdGVkIGluIHRoaXMgcXVldWUuIElmIHRoZSBmaWVsZCByZW1haW5zIGVtcHR5LCB0aGUgZGVmYXVsdCBxdWV1ZSBjb25maWd1cmVkIGFib3ZlIHdpbGwgYmUgdXNlZC4nfSA9CiAgICAgICAgJ0hhIHN6b2xnw6FsdGF0w6FzYWxhcMO6IHJlbmRzemVyYmVuIGRvbGdvenVuaywgYWtrb3IgbmVtIHN6ZXJldG7DqW5rIGZlbGFqw6FubGFuaSBheiDDvGd5ZsOpbG5layBhIHbDoXLDs2xpc3TDoWsga8O2esO2dHRpIHbDoWxhc3p0w6FzdCBheiDDvGd5ZsOpbHBvcnTDoWxvbiBhIGplZ3kgbMOpdHJlaG96w6FzYWtvciwgaGFuZW0gYSBzem9sZ8OhbHRhdMOhcyBhbGFwasOhbiBzemVyZXRuw6luayBlbGTDtm50ZW5pLCBob2d5IG1lbHlpayB2w6Fyw7NsaXN0w6FiYSAodmFneSBtZWx5aWsgw7xneWludMOpesWRaSBjc2FwYXRuYWspIGtlbGwgZWxzxZFrw6ludCBmZWxkb2xnb3puaSBhIGplZ3lldC4gQWhob3osIGhvZ3kgZXp0IGEgbGVoZXTFkXPDqWdldCDDqXN6c3plcsWxZW4gbGVoZXNzZW4gaGFzem7DoWxuaSwga2FwY3NvbGphIGtpIGEg4oCeVGlja2V0OjpGcm9udGVuZDo6Q3VzdG9tZXJUaWNrZXRNZXNzYWdlIyMjUXVldWXigJ0gYmXDoWxsw610w6FzdCwgw6lzIMOhbGzDrXRzb24gYmUgw6lzenN6ZXLFsSBhbGFww6lydGVsbWV6ZXR0IHbDoXLDs2xpc3TDoXQgYSDigJ5UaWNrZXQ6OkZyb250ZW5kOjpDdXN0b21lclRpY2tldE1lc3NhZ2UjIyNRdWV1ZURlZmF1bHTigJ0gYmXDoWxsw610w6FzYmFuLiBBbWludCBpdHQgYSBzem9sZ8OhbHRhdMOhc2JhbiBiZcOhbGzDrXQgZWd5IOKAnkplZ3kgY8OpbHbDoXLDs2xpc3TDoWph4oCdIMOpcnTDqWtldCwgYSBqZWd5IGF6b25uYWwgZWJiZW4gYSB2w6Fyw7NsaXN0w6FiYW4gbGVzeiBsw6l0cmVob3p2YS4gSGEgYSBtZXrFkSDDvHJlcyBtYXJhZCwgYWtrb3IgYSBmZW50IGJlw6FsbMOtdG90dCBhbGFww6lydGVsbWV6ZXR0IHbDoXLDs2xpc3RhIGxlc3ogaGFzem7DoWx2YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgeW91IGRvIG5vdCBhc3NpZ24gc2VydmljZXMgdG8gY3VzdG9tZXJzIG9yIGNvbXBhbmllcyBpbmRpdmlkdWFsbHksIGJ1dCBhbGwgc2VydmljZXMgYXJlIGluaXRpYWxseSBvZmZlcmVkIHRvIHlvdXIgY3VzdG9tZXJzIGZvciBzZWxlY3Rpb24sIHRoZSBzdGVwIG9mIHJlbGVhc2luZyBlYWNoIHNlcnZpY2UgYXMgYSAiZGVmYXVsdCIgc2VydmljZSB1bmRlciAiQWRtaW4gLT4gQ3VzdG9tZXIgdXNlciA8LT4gU2VydmljZSIgKG9yICJDdXN0b21lciA8LT4gU2VydmljZSIpIGNhbiBiZSBieXBhc3NlZCBoZXJlLiBPZiBjb3Vyc2UsIGluIHRoZSBuZXh0IHN0ZXAgaXQgaXMgcG9zc2libGUgdG8gcmVzdHJpY3QgdGhlIHNlcnZpY2VzIHZpYSBBQ0xzLid9ID0KICAgICAgICAnSGEgbmVtIHJlbmRlbCBob3p6w6EgZWd5ZW5rw6ludCBzem9sZ8OhbHRhdMOhc29rYXQgYXogw7xneWZlbGVraGV6IHZhZ3kgYSB2w6FsbGFsYXRva2hveiwgaGFuZW0gYXogw7Zzc3plcyBzem9sZ8OhbHRhdMOhc3QgZWxldmUgZmVsYWrDoW5samEgYXogw7xneWZlbGVpbmVrIHbDoWxhc3p0w6FzcmEsIGFra29yIGF6IOKAnkFkbWluaXN6dHLDoWNpw7Mg4oaSIMOcZ3lmw6lsLWZlbGhhc3puw6Fsw7Mg4oaUIFN6b2xnw6FsdGF0w6Fz4oCdICh2YWd5IOKAnsOcZ3lmw6lsIOKGlCBTem9sZ8OhbHRhdMOhc+KAnSkgYWxhdHQgYXogZWd5ZXMgc3pvbMOhbHRhdMOhc29rIOKAnmFsYXDDqXJ0ZWxtZXpldHTigJ0gc3pvbGfDoWx0YXTDoXNrw6ludCB0w7ZydMOpbsWRIGtpYWTDoXPDoW5hayBsw6lww6lzZSBpdHQgbWVna2Vyw7xsaGV0xZEuIFRlcm3DqXN6ZXRlc2VuIGEga8O2dmV0a2V6xZEgbMOpcMOpc2JlbiBsZWhldMWRc8OpZyB2YW4gYSBzem9sZ8OhbHRhdMOhc29rIEFDTC1la2VuIGtlcmVzenTDvGwgdMO2cnTDqW7FkSBrb3Jsw6F0b3rDoXPDoXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlLCB0aGVyZSBpcyB0aGUgcG9zc2liaWxpdHkgdG8gYXV0b21hdGljYWxseSBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdGlja2V0IHByaW9yaXR5IGluIHRoZSBiYWNrZ3JvdW5kIGJhc2VkIG9uIHRoZSBkeW5hbWljIGZpZWxkICJJVFNNQ3JpdGljYWxpdHkiIGFuZCAiSVRTTUltcGFjdCIuIFBsZWFzZSBhY3RpdmF0ZSB0aGUgb3B0aW9uICJUaWNrZXQ6OkV2ZW50TW9kdWxlUG9zdCMjIzk3MDAtU2V0RHluYW1pY0ZpZWxkQ3JpdGljYWxpdHlGcm9tU2VydmljZSIgYW5kIHRoZSBvcHRpb24gIlRpY2tldDo6RXZlbnRNb2R1bGVQb3N0IyMjOTgwMC1TZXRQcmlvcml0eUZyb21Dcml0aWNhbGl0eUFuZEltcGFjdE1hdHJpeCIuIEluIHRoZSBuZXh0IHN0ZXAsIHlvdSBoYXZlIHRoZSBwb3NzaWJpbGl0eSB1c2luZyAiQWRtaW4gLT4gQ3JpdGljYWxpdHkg4oaUIEltcGFjdCDihpQgUHJpb3JpdHkiIHRvIHNldCB0aGUgcHJpb3JpdHkgdXNpbmcgYSBtYXRyaXguJ30gPQogICAgICAgICdJdHQgbGVoZXTFkXPDqWcgdmFuIGFycmEsIGhvZ3kgYXV0b21hdGlrdXNhbiBraXN6w6Ftw610c2EgYSBtZWdmZWxlbMWRIGplZ3lwcmlvcml0w6FzdCBhIGjDoXR0w6lyYmVuIGF6IOKAnklUU01Dcml0aWNhbGl0eeKAnSDDqXMg4oCeSVRTTUltcGFjdOKAnSBkaW5hbWlrdXMgbWV6xZFrIGFsYXBqw6FuLiBBa3RpdsOhbGphIGEg4oCeVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyM5NzAwLVNldER5bmFtaWNGaWVsZENyaXRpY2FsaXR5RnJvbVNlcnZpY2XigJ0gw6lzIGEg4oCeVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyM5ODAwLVNldFByaW9yaXR5RnJvbUNyaXRpY2FsaXR5QW5kSW1wYWN0TWF0cml44oCdIGJlw6FsbMOtdMOhc29rYXQuIEEga8O2dmV0a2V6xZEgbMOpcMOpc2JlbiBsZWhldMWRc8OpZ2UgdmFuIGF6IOKAnkFkbWluaXN6dHLDoWNpw7Mg4oaSIEtyaXRpa3Vzc8OhZyDihpQgSGF0w6FzIOKGlCBQcmlvcml0w6Fz4oCdIGhhc3puw6FsYXTDoXZhbCBlZ3kgbcOhdHJpeCBzZWfDrXRzw6lnw6l2ZWwgYmXDoWxsw610YW5pIGEgcHJpb3JpdMOhc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzIHRvIGZhY2lsaXRhdGUgdGhlIHNlYXJjaCBmb3Igc2VydmljZXMgd2l0aGluIHRoZSBzZXJ2aWNlIGNhdGFsb2cuJ30gPQogICAgICAgICdLdWxjc3N6YXZhayBhIHN6b2xnw6FsdGF0w6Fzb2sga2VyZXPDqXPDqW5layBtZWdrw7ZubnnDrXTDqXPDqWhleiBhIHN6b2xnw6FsdGF0w6Fza2F0YWzDs2d1c29uIGJlbMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBkZXNjcmlwdGlvbnMgKHNob3J0ICYgbG9uZykgc3BlY2lmaWVkIGJ5IFVzZXIgTGFuZ3VhZ2UuJ30gPQogICAgICAgICdBIGZlbGhhc3puw6Fsw7MgbnllbHZlIMOhbHRhbCBtZWdhZG90dCBzem9sZ8OhbHRhdMOhc2xlw61yw6Fzb2sgKHLDtnZpZCDDqXMgaG9zc3rDuikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3J0IHN1bW1hcnkgb2YgdGhlIHNlcnZpY2UsIG1haW5seSB1c2VkIGluIHRoZSBDdXN0b21lckRhc2hib2FyZC4nfSA9CiAgICAgICAgJ0Egc3pvbGfDoWx0YXTDoXMgcsO2dmlkIMO2c3N6ZWZvZ2xhbMOhc2EsIGFtZWx5IGVsc8WRc29yYmFuIGF6IMO8Z3lmw6lsIHZlesOpcmzFkXB1bHRqw6FuIHZhbiBoYXN6bsOhbHZhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNjcmlwdGlvbiBvZiB0aGUgc2VydmljZS4gU2NyZWVuc2hvdHMgYW5kIHRhYmxlcyBhcmUgYWxzbyBhbGxvd2VkLiBQbGVhc2UgZW5zdXJlIHRoZSBjb3JyZWN0IHdpZHRoIG9mIHRoZSBpbWFnZSBmb3Igc2NyZWVuc2hvdHMuIFRoaXMgY2FuIGJlIGFkanVzdGVkIGluIHRoZSBja2VkaXRvciBhZnRlciB1cGxvYWRpbmcgdGhlIHNjcmVlbnNob3QuIEEgd2lkdGggb2YgNjAwcHggaGFzIHByb3ZlbiB0byBiZSB1c2VmdWwgb3IgeW91IGNhbiBjb25maWd1cmUgYSAibWF4LXdpZHRoIiBvZiA5NSUgdW5kZXIgQWR2YW5jZWQuJ30gPQogICAgICAgICdBIHN6b2xnw6FsdGF0w6FzIGxlw61yw6FzYS4gS8OpcGVybnnFkWvDqXBlayDDqXMgdMOhYmzDoXphdG9rIGlzIG1lZ2VuZ2VkZXR0ZWsuIEd5xZF6xZFkasO2biBtZWcgYXJyw7NsLCBob2d5IGEga8OpcGVrIHN6w6lsZXNzw6lnZSBtZWdmZWxlbMWRIGxlZ3llbiBhIGvDqXBlcm55xZFrw6lwZWtuw6lsLiBFeiBhIENLRWRpdG9yIHN6ZXJrZXN6dMWRYmVuIMOhbGzDrXRoYXTDsyBiZSBhIGvDqXBlcm55xZFrw6lwIGZlbHTDtmx0w6lzZSB1dMOhbi4gQSA2MDAga8OpcHBvbnRvcyBzesOpbGVzc8OpZyBqw7NsIGJldsOhbHQsIHZhZ3kgYmXDoWxsw610aGF0amEgYSDigJ5tYXgtd2lkdGjigJ0gw6lydMOpa2V0IDk1JS1yYSBhIOKAnlNwZWNpw6FsaXPigJ0gbWVuw7xwb250IGFsYXR0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbW9yZSBzZXJ2aWNlIGNhdGFsb2cgZmllbGRzJ30gPSAnVG92w6FiYmkgc3pvbGfDoWx0YXTDoXNrYXRhbMOzZ3VzIG1lesWRayBob3p6w6FhZMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgdGhlIG9wdGlvbiBvZiBhZGRpbmcgZnVydGhlciBmaWVsZHMgaGVyZSBpbiB0aGUgc2VydmljZSBjYXRhbG9nIGF0IGFueSB0aW1lLiBUbyBkbyB0aGlzLCBwbGVhc2UgZ28gdG8gIkFkbWluIC0+IER5bmFtaWNGaWVsZHMiIGFuZCBjcmVhdGUgdGhlIG5ldyBmaWVsZCBvZiB0aGUgb2JqZWN0IHR5cGUgIlNlcnZpY2UiLiBZb3UgY2FuIHRoZW4gYWN0aXZhdGUgdGhlIGZpZWxkIGZvciB0aGUgY3VzdG9tZXIgZGFzaGJvYXJkIHVuZGVyICJBZG1pbiAtPiBEeW5hbWljRmllbGQgU2NyZWVucyIgYnkgYXNzaWduaW5nIGl0IHVuZGVyICJDdXN0b21lckRhc2hib2FyZFRpbGUgU2VydmljZUNhdGFsb2ciLid9ID0KICAgICAgICAnTGVoZXTFkXPDqWdlIHZhbiB0b3bDoWJiaSBtZXrFkWtldCBob3p6w6FhZG5pYSBiw6FybWlrb3IgaXR0LCBhIHN6b2xnw6FsdGF0w6Fza2F0YWzDs2d1c2Jhbi4gRWhoZXogbWVuamVuIGF6IOKAnkFkbWluaXN6dHLDoWNpw7Mg4oaSIERpbmFtaWt1cyBtZXrFkWvigJ0gbW9kdWxob3osIMOpcyBob3p6YSBsw6l0cmUgYSDigJ5Tem9sZ8OhbHRhdMOhc+KAnSBvYmpla3R1bXTDrXB1c8O6IMO6aiBtZXrFkXQuIEV6dXTDoW4gYWt0aXbDoWxoYXRqYSBhIG1lesWRdCBheiDDvGd5ZsOpbCB2ZXrDqXJsxZFwdWx0asOhaG96IGF6IOKAnkFkbWluaXN6dHLDoWNpw7Mg4oaSIERpbmFtaWt1cyBtZXrFkWsga8OpcGVybnnFkWnigJ0gYWxhdHQgYXrDoWx0YWwsIGhvZ3kgaG96esOhcmVuZGVsaSBhIG1lesWRdCBhIOKAnkN1c3RvbWVyRGFzaGJvYXJkVGlsZSBTZXJ2aWNlQ2F0YWxvZ+KAnSBhbGF0dC4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTVNMQVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NMQSBJbmZvcm1hdGlvbid9ID0gJ1NMQSBpbmZvcm3DoWNpw7NrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1V0b2xqw6FyYSBtw7Nkb3PDrXR2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdVdG9sasOhcmEgbcOzZG9zw610b3R0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pbXVtIFRpbWUgQmV0d2VlbiBJbmNpZGVudHMnfSA9ICdBeiBpbmNpZGVuc2VrIGvDtnp0aSBsZWdraXNlYmIgaWTFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NvY2lhdGVkIFNlcnZpY2VzJ30gPSAnSG96esOhcmVuZGVsdCBzem9sZ8OhbHRhdMOhc29rJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01TZXJ2aWNlWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBJbmZvcm1hdGlvbid9ID0gJ1N6b2xnw6FsdGF0w6FzaW5mb3Jtw6FjacOzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IGluY2lkZW50IHN0YXRlJ30gPSAnSmVsZW5sZWdpIGluY2lkZW5zw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzb2NpYXRlZCBTTEFzJ30gPSAnSG96esOhcmVuZGVsdCBTTEEtayc7CgogICAgIyBKUyBUZW1wbGF0ZTogVGlsZVNlcnZpY2VDYXRhbG9nQ29udGFpbmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYSBuZXcgdGlja2V0IGZvciB0aGlzIHNlcnZpY2UuJ30gPSAnw5pqIGplZ3kgbMOpdHJlaG96w6FzYSBlaGhleiBhIHN6b2xnw6FsdGF0w6FzaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgJXMnfSA9ICclcyBsw6l0cmVob3rDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgJXMgc3ViLXNlcnZpY2UocyknfSA9ICclcyBhbHN6b2xnw6FsdGF0w6FzYWluYWsgbWVnamVsZW7DrXTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vcmUgZGV0YWlscyd9ID0gJ1RvdsOhYmJpIHLDqXN6bGV0ZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViLVNlcnZpY2UocyknfSA9ICdBbHN6b2xnw6FsdGF0w6Fzb2snOwoKICAgICMgSlMgVGVtcGxhdGU6IFRpbGVTZXJ2aWNlQ2F0YWxvZ0RldGFpbGVkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydzdWItc2VydmljZShzKSBhdmFpbGFibGUnfSA9ICdhbHN6b2xnw6FsdGF0w6FzIMOpcmhldMWRIGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhIG5ldyB0aWNrZXQgb2YgdHlwZSAlcy4nfSA9ICfDmmogJXMgdMOtcHVzw7ogamVneSBsw6l0cmVob3rDoXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZSBvbiB0aGlzIHRvcGljJ30gPSAnR3lJSyBiZWplZ3l6w6lzIGViYmVuIGEgdMOpbcOhYmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZGl0aW9uYWwgaW5mb3JtYXRpb24nfSA9ICdUb3bDoWJiaSBpbmZvcm3DoWNpw7NrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgaG91cnMnfSA9ICdTem9sZ8OhbHRhdMOhc2kgaWTFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvXCdjbG9jayd9ID0gJ8OzcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWRkaXRpb25hbCBkYXRhIGFyZSBhdmFpbGFibGUuJ30gPSAnTmVtIMOpcmhldMWRayBlbCB0b3bDoWJiaSBhZGF0b2suJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1cnRoZXIgaW5mb3JtYXRpb24nfSA9ICdUb3bDoWJiaSBpbmZvcm3DoWNpw7NrJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBUaWxlU2VydmljZUNhdGFsb2dNb2RhbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNhdGFsb2cnfSA9ICdLYXRhbMOzZ3VzIGtlcmVzw6lzZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJUaWxlU2VydmljZUNhdGFsb2cucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2NyaXB0aW9uIG5vdCBhdmFpbGFibGUuJ30gPSAnTGXDrXLDoXMgbmVtIMOpcmhldMWRIGVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICdGw6FqbGF6b25vc8OtdMOzIHN6w7xrc8OpZ2VzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNU2VydmljZVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFNlcnZpY2VJRCBpcyBnaXZlbiEnfSA9ICdOaW5jcyBzem9sZ8OhbHRhdMOhc2F6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2VJRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQSh6KSAlcyBzem9sZ8OhbHRhdMOhc2F6b25vc8OtdMOzIG5lbSB0YWzDoWxoYXTDsyBheiBhZGF0YsOhemlzYmFuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ8O8emVta8OpcGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdmaWd5ZWxtZXp0ZXTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVucyc7CgogICAgIyBKUyBGaWxlOiBDb3JlLkFnZW50LkFkbWluLlNlcnZpY2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBzZXJ2aWNlIGRlc2NyaXB0aW9uIGxhbmd1YWdlPyd9ID0KICAgICAgICAnVmFsw7NiYW4gdMO2csO2bG5pIHN6ZXJldG7DqSBlenQgYSBzem9sZ8OhbHRhdMOhc2xlw61yw6FzLW55ZWx2ZXQ/JzsKCiAgICAjIEpTIEZpbGU6IENvcmUuQ3VzdG9tZXIuVGlsZVNlcnZpY2VDYXRhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHRzIGZvciAlcyd9ID0gJ1RhbMOhbGF0b2sgZXJyZTogJXMnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRpdGlvbmFsIHNldHRpbmdzIGZvciB0aGUgc2VydmljZSBjYXRhbG9nLid9ID0gJ1RvdsOhYmJpIGJlw6FsbMOtdMOhc29rIGEgc3pvbGfDoWx0YXTDoXNrYXRhbMOzZ3VzaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lclRpbGVTZXJ2aWNlQ2F0YWxvZyBBSkFYIE1vZHVsZS4nfSA9ICfDnGd5ZsOpbGNzZW1wZS1zem9sZ8OhbHRhdMOhc2thdGFsw7NndXMgQUpBWC1tb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIHNlcnZpY2UgY2F0YWxvZyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lmw6lsZmVsw7xsZXQgc3pvbGfDoWx0YXTDoXNrYXRhbMOzZ3VzIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSByZWdpc3RyYXRpb24uIEN1cnJlbnRseSwgdGhlIGNyaXRpY2FsaXR5IG9mIHRoZSBzZXJ2aWNlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgc2VydmljZSwgYnV0IHRoaXMgaGFzIG5vIGVmZmVjdC4gVGhlcmVmb3JlLCB0aGlzIGV2ZW50IG1vZHVsZSBoYXMgYmVlbiBpbXBsZW1lbnRlZCB0aGF0IGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgRHluYW1pY0ZpZWxkIENyaXRpY2FsaXR5IGluIGEgdGlja2V0IGFzIHNvb24gYXMgYSBzZXJ2aWNlIGhhcyBiZWVuIGFzc2lnbmVkLiBQbGVhc2UgYWN0aXZhdGUgdGhlIFN5c0NvbmZpZyBvcHRpb24gU2V0UHJpb3JpdHlGcm9tQ3JpdGljYWxpdHlBbmRJbXBhY3RNYXRyaXggdG8gc2V0IHRoZSBwcmlvcml0eSBpbiB0aGUgbmV4dCBzdGVwIGJhc2VkIGFuIENyaXRpY2FsaXR5IGFuZCBJbXBhY3QuJ30gPQogICAgICAgICdFc2Vtw6lueW1vZHVsIHJlZ2lzenRyw6FjacOzLiBKZWxlbmxlZyBhIHN6b2xnw6FsdGF0w6FzIGtyaXRpa3Vzc8OhZ2EgYmXDoWxsw610aGF0w7MgYSBzem9sZ8OhbHRhdMOhc2JhbiBpcywgZGUgZW5uZWsgbmluY3MgaGF0w6FzYS4gRXrDqXJ0IGtlcsO8bHQgbWVndmFsw7Nzw610w6FzcmEgZXogYXogZXNlbcOpbnltb2R1bCwgYW1lbHkgYXV0b21hdGlrdXNhbiBmcmlzc8OtdGkgYSBrcml0aWt1c3PDoWcgZGluYW1pa3VzIG1lesWRdCBhIGplZ3liZW4sIGFtaW50IGVneSBzem9sZ8OhbHRhdMOhcyBob3p6w6FyZW5kZWzDqXNyZSBrZXLDvGwuIEFrdGl2w6FsamEgYSDigJ5TZXRQcmlvcml0eUZyb21Dcml0aWNhbGl0eUFuZEltcGFjdE1hdHJpeOKAnSByZW5kc3plcmJlw6FsbMOtdMOhc2kgbGVoZXTFkXPDqWdldCwgaG9neSBiZcOhbGzDrXRzYSBhIHByaW9yaXTDoXN0IGEga8O2dmV0a2V6xZEgbMOpcMOpc2JlbiBlZ3kga3JpdGlrdXNzw6FnIMOpcyBoYXTDoXMgYWxhcGrDoW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSByZWdpc3RyYXRpb24uIEN1cnJlbnRseSwgdGhlIGNyaXRpY2FsaXR5IG9mIHRoZSBzZXJ2aWNlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgc2VydmljZSwgYnV0IHRoaXMgaGFzIG5vIGVmZmVjdC4gVGhlcmVmb3JlLCB0aGlzIGV2ZW50IG1vZHVsZSBoYXMgYmVlbiBpbXBsZW1lbnRlZCB0aGF0IGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgcHJpb3JpdHkgcmVnYXJkaW5nIENyaXRpY2FsaXR5IGFuZCBJbXBhY3QgaW4gYSB0aWNrZXQuJ30gPQogICAgICAgICdFc2Vtw6lueW1vZHVsIHJlZ2lzenRyw6FjacOzLiBKZWxlbmxlZyBhIHN6b2xnw6FsdGF0w6FzIGtyaXRpa3Vzc8OhZ2EgYmXDoWxsw610aGF0w7MgYSBzem9sZ8OhbHRhdMOhc2JhbiBpcywgZGUgZW5uZWsgbmluY3MgaGF0w6FzYS4gRXrDqXJ0IGtlcsO8bHQgbWVndmFsw7Nzw610w6FzcmEgZXogYXogZXNlbcOpbnltb2R1bCwgYW1lbHkgYXV0b21hdGlrdXNhbiBmcmlzc8OtdGkgYSBwcmlvcml0w6FzdCBhIGtyaXRpa3Vzc8OhZ3JhIMOpcyBoYXTDoXNyYSB2b25hdGtvesOzYW4gYSBqZWd5YmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHNlcnZpY2VzIHdpdGggdGhlIGZvbGxvd2luZyB0aWNrZXQgdHlwZSBsYXN0Lid9ID0gJ0Ega8O2dmV0a2V6xZEgamVneXTDrXB1c29ra2FsIHJlbmRlbGtlesWRIHN6b2xnw6FsdGF0w6Fzb2sgbWVnamVsZW7DrXTDqXNlIHV0b2xqw6FyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIEZBUSBmaWVsZCB0aGF0IHNob3VsZCBiZSB1c2VkIGFzIHRoZSBkZXNjcmlwdGlvbiBvZiBhbiBGQVEgYXJ0aWNsZSBpbiB0aGUgc2lkZWJhciAoZS5nLiBGaWVsZDEsIEZpZWxkMiwgRmllbGQzLi4uKS4nfSA9CiAgICAgICAgJ0F6IGEgR3lJSyBtZXrFkSwgYW1lbHlldCBlZ3kgR3lJSyBiZWplZ3l6w6lzIGxlw61yw6FzYWvDqW50IGtlbGwgaGFzem7DoWxuaSBheiBvbGRhbHPDoXZiYW4gKHDDqWxkw6F1bCBNZXrFkTEsIE1lesWRMiwgTWV6xZEzIHN0Yi4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgQUNMcyBmb3IgZGlmZmVyZW50IGludGVyZmFjZXMgd2hlbiBjcmVhdGluZyBzZXJ2aWNlcy4gU2VydmljZXMgd2lsbCB0aGVuIG9ubHkgYmUgZGlzcGxheWVkIGlmIHRoZSB0aWNrZXQgdHlwZSBzdG9yZWQgaW4gdGhlIHNlcnZpY2UgaGFzIGJlZW4gc2VsZWN0ZWQuIFRoZSAiQWRkQnVsa0FDTCIgY29uc29sZSBzY3JpcHQgY2FuIGFsc28gYmUgdXNlZCB0byBjcmVhdGUgQUNMcyBmb3Igc2VydmljZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBjcmVhdGUuJ30gPQogICAgICAgICdFeiBhIGJlw6FsbMOtdMOhcyBsZWhldMWRdsOpIHRlc3ppIEFDTC1layBhdXRvbWF0aWt1cyBlbMWRw6FsbMOtdMOhc8OhdCBhIGvDvGzDtm5iw7Z6xZEgZmVsw7xsZXRla2hleiBhIHN6b2xnw6FsdGF0w6Fzb2sgbMOpdHJlaG96w6FzYWtvci4gQSBzem9sZ8OhbHRhdMOhc29rIGV6dXTDoW4gY3NhayBha2tvciBqZWxlbm5layBtZWcsIGhhIGEgc3pvbGfDoWx0YXTDoXNiYW4gdMOhcm9sdCBqZWd5dMOtcHVzdCBraXbDoWxhc3p0b3R0w6FrLiBBeiDigJ5BZGRCdWxrQUNM4oCdIGtvbnpvbHBhcmFuY3MgaXMgaGFzem7DoWxoYXTDsyBhIG3DoXIgbMOpdHJlaG96b3R0IHN6b2xnw6FsdGF0w6Fzb2tob3ogdGFydG96w7MgQUNMLWVrIGzDqXRyZWhvesOhc8OhcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgb3B0aW9uIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHByZWNvbmZpZ3VyZSB0aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgQUNMcy4gVGhlIGFpbSBpcyB0byBvbmx5IGRpc3BsYXkgdGhlIHNlcnZpY2VzIHRoYXQgaGF2ZSBhbHNvIGJlZW4gYXNzaWduZWQgdG8gdGhlIHNlcnZpY2UgaW4gdGhlIHNlcnZpY2UgY2F0YWxvZy4gVG8gdXNlIHRoaXMgZnVuY3Rpb24sIHBsZWFzZSBmaXJzdCBlbmFibGUgdGhlICJTZXJ2aWNlQ2F0YWxvZzo6Q3JlYXRlVHlwZVNlcnZpY2VSZWxhdGVkQWNscyIgb3B0aW9uLiAiR2VuZXJhdGVJbml0YWxBQ0xUb0Rpc2FibGVBbGxTZXJ2aWNlcyIgZ2VuZXJhdGVzIGFuIEFDTCB0aGF0IGluaXRpYWxseSBoaWRlcyBhbGwgc2VydmljZXMuIFRoZSB2YWx1ZSAiUG9zc2libGUiIG9yICJQb3NzaWJsZUFkZCIgY2FuIGJlIHNldCBmb3IgdGhlIGtleSAiQ29uZmlnQ2hhbmdlIi4gVGhlICJEZXBsb3lOZXdBQ0wiIGtleSBkZWNpZGVzIHdoZXRoZXIgdGhlIGNoYW5nZWQgQUNMIHNob3VsZCBhbHNvIGJlIGRlcGxveWVkIGltbWVkaWF0ZWx5LiAiQUNMVmFsaWRJRCIgKDEsIDIsIDMpIHNldHMgdGhlIEFDTHMgdG8gdmFsaWQsIGludmFsaWQgb3IgdGVtcG9yYXJpbHkgaW52YWxpZC4nfSA9CiAgICAgICAgJ0V6IGEgYmXDoWxsw610w6FzIGxlaGV0xZF2w6kgdGVzemkgYXogYXV0b21hdGlrdXNhbiBlbMWRw6FsbMOtdG90dCBBQ0wtZWsgZWzFkXpldGVzIGJlw6FsbMOtdMOhc8OhdC4gQSBjw6lsIGF6LCBob2d5IGNzYWsgb2x5YW4gc3pvbGfDoWx0YXTDoXNvayBqZWxlbmplbmVrIG1lZywgYW1lbHllayBob3p6w6EgaXMgbGV0dGVrIHJlbmRlbHZlIGEgc3pvbGfDoWx0YXTDoXNob3ogYSBzem9sZ8OhbHRhdMOhc2thdGFsw7NndXNiYW4uIEEgZnVua2Npw7MgaGFzem7DoWxhdMOhaG96IGVsxZFzesO2ciBlbmdlZMOpbHllenplIGEg4oCeU2VydmljZUNhdGFsb2c6OkNyZWF0ZVR5cGVTZXJ2aWNlUmVsYXRlZEFjbHPigJ0gYmXDoWxsw610w6FzdC4gQSDigJ5HZW5lcmF0ZUluaXRhbEFDTFRvRGlzYWJsZUFsbFNlcnZpY2Vz4oCdIG9seWFuIEFDTC10IMOhbGzDrXQgZWzFkSwgYW1lbHkga2V6ZGV0YmVuIGVscmVqdGkgYXogw7Zzc3plcyBzem9sZ8OhbHRhdMOhc3QuIEEg4oCeUG9zc2libGXigJ0gdmFneSDigJ5Qb3NzaWJsZUFkZOKAnSDDqXJ0w6lrIMOhbGzDrXRoYXTDsyBiZSBhIOKAnkNvbmZpZ0NoYW5nZeKAnSBrdWxjc2hvei4gQSDigJ5EZXBsb3lOZXdBQ0zigJ0ga3VsY3MgZMO2bnRpIGVsLCBob2d5IGEgbWVndsOhbHRvenRhdG90dCBBQ0wtdCBpcyBhem9ubmFsIMO8emVtYmUga2VsbC1lIMOhbGzDrXRhbmkuIEF6IOKAnkFDTFZhbGlkSUTigJ0gKDEsIDIsIDMpIMOhbGzDrXRqYSBiZSBheiBBQ0wtZWtldCDDqXJ2w6lueWVzcmUsIMOpcnbDqW55dGVsZW5yZSB2YWd5IMOhdG1lbmV0aWxlZyDDqXJ2w6lueXRlbGVucmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ3VzdG9tZXJEYXNoYm9hcmQuIE1vZHVsZSBpcyByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZGl0aW9uYWwgaW5mb3JtYXRpb24nLAogICAgJ0FsbCcsCiAgICAnQ2xvc2UgdGhpcyBkaWFsb2cnLAogICAgJ0NyZWF0ZSAlcycsCiAgICAnQ3JlYXRlIFRpY2tldCcsCiAgICAnQ3JlYXRlIGEgbmV3IHRpY2tldCBmb3IgdGhpcyBzZXJ2aWNlLicsCiAgICAnQ3JlYXRlIGEgbmV3IHRpY2tldCBvZiB0eXBlICVzLicsCiAgICAnRGV0YWlscycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHNlcnZpY2UgZGVzY3JpcHRpb24gbGFuZ3VhZ2U/JywKICAgICdGQVEgYXJ0aWNsZSBvbiB0aGlzIHRvcGljJywKICAgICdGaXJzdCBSZXNwb25zZSBUaW1lJywKICAgICdGdXJ0aGVyIGluZm9ybWF0aW9uJywKICAgICdNb3JlIGRldGFpbHMnLAogICAgJ05vIGFkZGl0aW9uYWwgZGF0YSBhcmUgYXZhaWxhYmxlLicsCiAgICAnT0snLAogICAgJ1Jlc3VsdHMnLAogICAgJ1Jlc3VsdHMgZm9yICVzJywKICAgICdTZWFyY2gnLAogICAgJ1NlYXJjaCBjYXRhbG9nJywKICAgICdTZXJ2aWNlIEluZm9ybWF0aW9uJywKICAgICdTZXJ2aWNlIGhvdXJzJywKICAgICdTaG93ICVzIHN1Yi1zZXJ2aWNlKHMpJywKICAgICdTaG93IGRldGFpbHMgb2YgdGhpcyBzZXJ2aWNlLicsCiAgICAnU2hvdyBvciBoaWRlIHRoZSBjb250ZW50JywKICAgICdTb2x1dGlvbiBUaW1lJywKICAgICdTdWItU2VydmljZShzKScsCiAgICAnaG91cihzKScsCiAgICAnb1wnY2xvY2snLAogICAgJ3N1Yi1zZXJ2aWNlKHMpIGF2YWlsYWJsZScsCiAgICApOwoKfQoKMTsK</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">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnb3RvYm8nOwogIHNyYzogIHVybCgnLi4vLi4vLi4vLi4vY29tbW9uL2ZvbnRzL290b2JvLmVvdD84ZjN3bGonKTsKICBzcmM6ICB1cmwoJy4uLy4uLy4uLy4uL2NvbW1vbi9mb250cy9vdG9iby5lb3Q/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">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIElucHV0IEZpZWxkcwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgovKioKICogQHN1YnNlY3Rpb24gIEdlbmVyYWwKICovCgpkaXYuSW5wdXRGaWVsZF9Db250YWluZXIgewogICAgcG9zaXRpb246IHN0YXRpYzsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKZGl2LklucHV0RmllbGRfSW5wdXRDb250YWluZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbGluZS1oZWlnaHQ6IDExcHg7Cn0KCi5JbnB1dEZpZWxkX1NlYXJjaDo6LW1zLWNsZWFyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICB3aWR0aCA6IDA7CiAgICBoZWlnaHQ6IDA7Cn0KCi5JbnB1dEZpZWxkX1NlYXJjaCwKLklucHV0RmllbGRfQXV0b2NvbXBsZXRlIHsKLyogUm90aGVyIE9TUwogICAgbWluLXdpZHRoOiAxOTBweDsgKi8KICAgIG1pbi13aWR0aDogMzAwcHg7Ci8qIEVPIFJvdGhlciBPU1MgKi8KfQoKLklucHV0RmllbGRfU2VhcmNoLlNtYWxsIHsKICAgIG1pbi13aWR0aDogMTMwcHg7Cn0KCi5JbnB1dEZpZWxkX1NlYXJjaFtyZWFkb25seV06Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xCR0RhcmspOwp9CgouSW5wdXRGaWVsZF9TZWFyY2hbcmVhZG9ubHldLkVycm9yOmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sVGV4dEVycik7Cn0KCi5TaWRlYmFyQ29sdW1uIC5XaWRnZXRTaW1wbGUgLklucHV0RmllbGRfU2VhcmNoLAouU2lkZWJhckNvbHVtbiAuV2lkZ2V0U2ltcGxlIC5JbnB1dEZpZWxkX0F1dG9jb21wbGV0ZSB7CiAgICBtaW4td2lkdGg6IDgwcHg7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9CgouU2lkZWJhckNvbHVtbiAuV2lkZ2V0U2ltcGxlIC5JbnB1dEZpZWxkX0NvbnRhaW5lciwKLlNpZGViYXJDb2x1bW4gLldpZGdldFNpbXBsZSAuSW5wdXRGaWVsZF9Db250YWluZXIgLklucHV0RmllbGRfSW5wdXRDb250YWluZXIsCi5TaWRlYmFyQ29sdW1uIC5XaWRnZXRTaW1wbGUgc2VsZWN0Lk1vZGVybml6ZSB7CiAgICB3aWR0aDogMTAwJTsKfQoKLldpZGdldFNldHRpbmdzRm9ybSAuSW5wdXRGaWVsZF9TZWFyY2gsCi5XaWRnZXRTZXR0aW5nc0Zvcm0gLklucHV0RmllbGRfQXV0b2NvbXBsZXRlIHsKICAgIG1pbi13aWR0aDogMHB4Owp9Cgoub29vQUNMSGlkZGVuIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKLk11bHRpVmFsdWVfVGVtcGxhdGUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9CgouVGFibGVMaWtlIC5Sb3dfRHluYW1pY0ZpZWxkIHsKICAgIGRpc3BsYXk6IGdyaWQ7Cn0KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNXB4KSB7CiAgICBmaWVsZHNldC5UYWJsZUxpa2UgPiAuRmllbGQgPiAuTW9kZXJuaXplI1R5cGVJRCwKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSA+IC5GaWVsZCA+IC5Nb2Rlcm5pemUjRGVzdCwKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSA+IC5GaWVsZCA+IC5Nb2Rlcm5pemUjTmV3UXVldWVJRCwKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSA+IC5GaWVsZCA+IC5Nb2Rlcm5pemUjU2VydmljZUlELAogICAgZmllbGRzZXQuVGFibGVMaWtlID4gLkZpZWxkID4gLk1vZGVybml6ZSNTTEFJRCwKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSA+IC5GaWVsZCA+IC5Nb2Rlcm5pemUjTmV3VXNlcklELAogICAgZmllbGRzZXQuVGFibGVMaWtlID4gLkZpZWxkID4gLk1vZGVybml6ZSNOZXdPd25lcklELAogICAgZmllbGRzZXQuVGFibGVMaWtlID4gLkZpZWxkID4gLk1vZGVybml6ZSNOZXdSZXNwb25zaWJsZUlELAogICAgZmllbGRzZXQuVGFibGVMaWtlID4gLkZpZWxkID4gLk1vZGVybml6ZSNTdGFuZGFyZFRlbXBsYXRlSUQsCiAgICBmaWVsZHNldC5UYWJsZUxpa2UgPiAuRmllbGQgPiAuTW9kZXJuaXplI05leHRTdGF0ZUlELAogICAgZmllbGRzZXQuVGFibGVMaWtlID4gLkZpZWxkID4gLk1vZGVybml6ZSNOZXdTdGF0ZUlELAogICAgZmllbGRzZXQuVGFibGVMaWtlID4gLkZpZWxkID4gLk1vZGVybml6ZSNQcmlvcml0eUlELAogICAgZmllbGRzZXQuVGFibGVMaWtlID4gLkZpZWxkID4gLk1vZGVybml6ZSNOZXdQcmlvcml0eUlELAogICAgZmllbGRzZXQuVGFibGVMaWtlID4gLlJvdyA+IC5GaWVsZCA+IHNlbGVjdC5Nb2Rlcm5pemUgewogICAgICAgIG1pbi13aWR0aDogMzAwcHg7CiAgICB9CgogICAgZmllbGRzZXQuVGFibGVMaWtlID4gLkZpZWxkID4gaW5wdXQuVzUwcGMsCiAgICBmaWVsZHNldC5UYWJsZUxpa2UgPiAuUm93ID4gLkZpZWxkID4gaW5wdXQuVzUwcGMgewogICAgICAgIG1heC13aWR0aDogMzEwcHg7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIH0KCiAgICBmaWVsZHNldC5UYWJsZUxpa2UgLlJvdyA+IC5GaWVsZENlbGwgPiAuRmllbGQgPiBzZWxlY3QuTW9kZXJuaXplLAogICAgZmllbGRzZXQuVGFibGVMaWtlIC5Sb3cgPiAuRmllbGRDZWxsID4gLkZpZWxkID4gaW5wdXQuVzc1cGMsCiAgICBmaWVsZHNldC5UYWJsZUxpa2UgLlJvdyA+IC5GaWVsZENlbGwgPiAuRmllbGQgPiBpbnB1dC5XNTBwYywKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSAuUm93ID4gLkZpZWxkQ2VsbCA+IC5GaWVsZCA+IGlucHV0W3R5cGU9InRleHQiXSwKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSAuRmllbGRDZWxsID4gLkZpZWxkID4gZGl2LklucHV0RmllbGRfQ29udGFpbmVyID4gZGl2LklucHV0RmllbGRfSW5wdXRDb250YWluZXIgPiAuSW5wdXRGaWVsZF9TZWFyY2gsCiAgICBmaWVsZHNldC5UYWJsZUxpa2UgLkZpZWxkQ2VsbCA+IC5GaWVsZCA+IGRpdi5JbnB1dEZpZWxkX0NvbnRhaW5lciA+IGRpdi5JbnB1dEZpZWxkX0lucHV0Q29udGFpbmVyID4gLklucHV0RmllbGRfQXV0b2NvbXBsZXRlIHsKICAgICAgICBtaW4td2lkdGg6IDMwMHB4OwogICAgfQoKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSA+IC5Sb3c6bm90KC5NdWx0aUNvbHVtbikgPiAuRmllbGRDZWxsID4gLkZpZWxkID4gaW5wdXQuVzUwcGMgewogICAgICAgIG1heC13aWR0aDogNTAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICB9CgogICAgZmllbGRzZXQuVGFibGVMaWtlID4gLkZpZWxkID4gaW5wdXQuVzc1cGMsCiAgICBmaWVsZHNldC5UYWJsZUxpa2UgPiAuUm93ID4gLkZpZWxkID4gaW5wdXQuVzc1cGMgewogICAgICAgIG1heC13aWR0aDogNjIwcHg7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIH0KCiAgICBmaWVsZHNldC5UYWJsZUxpa2UgPiAuRmllbGQgPiBpbnB1dCNTdWJqZWN0IHsKICAgICAgICB3aWR0aDogNzUlOwogICAgICAgIG1heC13aWR0aDogNjIwcHg7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIH0KCiAgICBmaWVsZHNldC5UYWJsZUxpa2UgPiAuRmllbGQgPiBkaXYuQ3VzdG9tZXJDb250YWluZXIsCiAgICBmaWVsZHNldC5UYWJsZUxpa2UgPiAuRmllbGQgPiBkaXYuQ2NDdXN0b21lckNvbnRhaW5lciwKICAgIGZpZWxkc2V0LlRhYmxlTGlrZSA+IC5GaWVsZCA+IGRpdi5CY2NDdXN0b21lckNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IGNhbGMoIDc1JSAtIDdweCApOwogICAgICAgIG1heC13aWR0aDogNjA3cHg7CiAgICB9Cgp9CgojSGVhZGVyIGRpdi5JbnB1dEZpZWxkX0NvbnRhaW5lciB7CiAgICBjb2xvcjogdmFyKC0tY29sVGV4dERhcmspOwp9CgojVG9vbEJhciBsaS5FeHRlbmRlZCBmb3JtIGRpdi5JbnB1dEZpZWxkX0NvbnRhaW5lciAqIHsKCWZsb2F0OiBub25lOwp9CgojVG9vbEJhciBkaXYuSW5wdXRGaWVsZF9Db250YWluZXIgbGkgewogICAgaGVpZ2h0OiBhdXRvOwogICAgbWFyZ2luOiBpbmhlcml0OwogICAgd2lkdGg6IGF1dG87Cn0KCiNUb29sQmFyIGRpdi5JbnB1dEZpZWxkX0NvbnRhaW5lciBhIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGhlaWdodDogYXV0bzsKICAgIHRleHQtaW5kZW50OiAwOwogICAgd2lkdGg6IGF1dG87Cn0KCiNUb29sQmFyIC5JbnB1dEZpZWxkX1NlYXJjaCwKI1Rvb2xCYXIgLklucHV0RmllbGRfQXV0b2NvbXBsZXRlIHsKICAgIG1pbi13aWR0aDogNjVweDsKfQoKLklucHV0RmllbGRfU2VhcmNoW2Rpc2FibGVkXSB7CiAgICBjb2xvcjogI2FhYTsKfQoKZGl2LklucHV0RmllbGRfSW5wdXRDb250YWluZXIgLklucHV0RmllbGRfU2VhcmNoIHsKICAgIG1hcmdpbjogMDsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKfQoKI0NvbnRleHRTZXR0aW5nc0RpYWxvZyBkaXYuSW5wdXRGaWVsZF9JbnB1dENvbnRhaW5lciAuSW5wdXRGaWVsZF9TZWFyY2ggewogICAgbWluLXdpZHRoOiAwcHg7Cn0KCmZpZWxkc2V0LlRhYmxlTGlrZSA+IC5Sb3cuTXVsdGlDb2x1bW4gPiAuRmllbGRDZWxsID4gLkZpZWxkID4gc2VsZWN0Lk1vZGVybml6ZSwKZmllbGRzZXQuVGFibGVMaWtlID4gLlJvdy5NdWx0aUNvbHVtbiA+IC5GaWVsZENlbGwgPiAuRmllbGQgPiBpbnB1dC5XNzVwYywKZmllbGRzZXQuVGFibGVMaWtlID4gLlJvdy5NdWx0aUNvbHVtbiA+IC5GaWVsZENlbGwgPiAuRmllbGQgPiBpbnB1dC5XNTBwYywKZmllbGRzZXQuVGFibGVMaWtlID4gLlJvdy5NdWx0aUNvbHVtbiA+IC5GaWVsZENlbGwgLklucHV0RmllbGRfSW5wdXRDb250YWluZXIgPiBpbnB1dCB7CiAgICBtaW4td2lkdGg6IDAgIWltcG9ydGFudDsKICAgIHdpZHRoOiBjYWxjKCAxMDAlIC0gN3B4ICk7Cn0KCi5EeW5hbWljRmllbGREQiB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gMTJweCk7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9CgpmaWVsZHNldC5UYWJsZUxpa2UgPiAuUm93Lk11bHRpQ29sdW1uID4gLkZpZWxkQ2VsbCAuSW5wdXRGaWVsZF9Db250YWluZXIsCmZpZWxkc2V0LlRhYmxlTGlrZSA+IC5Sb3cuTXVsdGlDb2x1bW4gPiAuRmllbGRDZWxsIC5JbnB1dEZpZWxkX0lucHV0Q29udGFpbmVyIHsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgovKi5GaWVsZENlbGwgLklucHV0RmllbGRfU2VhcmNoIHsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0qLwoKLyouTXVsdGlDb2x1bW4gPiAuRmllbGRDZWxsID4gLkZpZWxkID4gZGl2LklucHV0RmllbGRfQ29udGFpbmVyID4gZGl2LklucHV0RmllbGRfSW5wdXRDb250YWluZXIgPiAuSW5wdXRGaWVsZF9TZWFyY2gsCi5NdWx0aUNvbHVtbiA+IC5GaWVsZENlbGwgPiAuRmllbGQgPiBkaXYuSW5wdXRGaWVsZF9Db250YWluZXIgPiBkaXYuSW5wdXRGaWVsZF9JbnB1dENvbnRhaW5lciA+IC5JbnB1dEZpZWxkX0F1dG9jb21wbGV0ZSB7CiAgICBtaW4td2lkdGg6IDEwMCU7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9Ki8KCi5GaWVsZENlbGwgewogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLkZpZWxkQ2VsbCBkaXYub29vVGl0bGUgewogICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKfQoKLypkaXYuUm93LlJvd19EeW5hbWljRmllbGQgZGl2LlNpbmdsZUNvbHVtbiA+IGxhYmVsLApkaXYuUm93LlJvd19EeW5hbWljRmllbGQgZGl2LlNpbmdsZUNvbHVtbiA+IGRpdi5NdWx0aVZhbHVlSXRlbSA+IGxhYmVsLApkaXYuUm93LlJvd19EeW5hbWljRmllbGQgZGl2Lk11bHRpQ29sdW1uID4gbGFiZWwsCmRpdi5Sb3cuUm93X0R5bmFtaWNGaWVsZCBkaXYuTXVsdGlDb2x1bW4gPiBkaXYuTXVsdGlWYWx1ZUl0ZW0gPiBsYWJlbCB7CiAgICB3aWR0aDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogNXB4OwogICAgZmxvYXQ6IG5vbmU7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgZm9udC1zaXplOiAwLjllbTsKICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGxpbmUtaGVpZ2h0OiAxLjllbTsKICAgIG1pbi1oZWlnaHQ6IDE3cHg7CiAgICBwYWRkaW5nLXRvcDogMC4zZW07CiAgICBwYWRkaW5nLWJvdHRvbTogMXB4OwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZBRkFGQTsKfSovCgpmaWVsZHNldC5UYWJsZUxpa2UgLkFkZFJlbW92ZVZhbHVlUm93IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmctbGVmdDogOHB4Owp9CgouQWRkVmFsdWVSb3csCi5SZW1vdmVWYWx1ZVJvdyB7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCmZpZWxkc2V0LlRhYmxlTGlrZSBmaWVsZHNldC5EeW5hbWljRmllbGRTZXQgewogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIHdpZHRoOiAxMDAlCn0KCi8qIG5lZWRlZCBmb3IgbXVsdGl2YWx1ZSBzZXRzIGR1ZSB0byBjdXJyZW50IGRpZmZlcmVuY2UgaW4gb3V0ZXIgc3RydWN0dXJlIGNvbXBhcmVkIHRvIHNpbmdsZSB2YWx1ZSBzZXRzICovCmZpZWxkc2V0LlRhYmxlTGlrZSAuTXVsdGlWYWx1ZSA+IC5GaWVsZENlbGwgPiAuRmllbGQgPiAuRHluYW1pY0ZpZWxkU2V0IHsKICAgIHdpZHRoOiAxMDAlOwp9CgpmaWVsZHNldC5UYWJsZUxpa2UgLk11bHRpVmFsdWUgLkRGU2V0T3V0ZXJGaWVsZCB+IC5BZGRSZW1vdmVWYWx1ZVJvdyB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgcGFkZGluZy10b3A6IDE2cHg7Cn0KCmEuSW5wdXRGaWVsZF9BY3Rpb24gewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBjb2xvcjogdmFyKC0tY29sVGV4dERhcmspOwogICAgdG9wOiA1cHg7Cn0KCmEuSW5wdXRGaWVsZF9BY3Rpb246aG92ZXIgewogICAgY29sb3I6IHZhcigtLWNvbEhpZ2hsaWdodCk7Cn0KCmRpdi5JbnB1dEZpZWxkX1NlbGVjdGlvbiB7CiAgICBkaXNwbGF5OiBub25lOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiA0cHg7CiAgICBoZWlnaHQ6IDE3cHg7CiAgICBsaW5lLWhlaWdodDogMTFweDsKICAgIHRleHQtc2hhZG93OiBub25lOwp9CgpkaXYuSW5wdXRGaWVsZF9TZWxlY3Rpb24gZGl2IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQtc2l6ZTogMTFweDsKfQoKZGl2LklucHV0RmllbGRfU2VsZWN0aW9uIGRpdi5UZXh0IHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbEJHTWVkaXVtKTsKICAgIHBhZGRpbmc6IDJweCA0cHg7Cn0KCmRpdi5JbnB1dEZpZWxkX1NlbGVjdGlvbiBkaXYuUmVtb3ZlIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbEJHRGFyayk7CiAgICBjb2xvcjogI2ZmZjsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLkFscmVhZHlEaXNhYmxlZCBkaXYuSW5wdXRGaWVsZF9TZWxlY3Rpb24gZGl2LlRleHQgewogICAgYmFja2dyb3VuZDogdmFyKC0tY29sQkdMaWdodCk7CiAgICBjdXJzb3I6IGRlZmF1bHQ7Cn0KCi5BbHJlYWR5RGlzYWJsZWQgZGl2LklucHV0RmllbGRfU2VsZWN0aW9uIGRpdi5SZW1vdmUgewogICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgZGlzcGxheTogbm9uZTsKfQoKZGl2LklucHV0RmllbGRfU2VsZWN0aW9uIGRpdi5SZW1vdmUgYSB7CiAgICBjb2xvcjogI2ZmZjsKICAgIHBhZGRpbmc6IDJweCA0cHg7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGJvcmRlci1ib3R0b206IG5vbmU7Cn0KCmRpdi5JbnB1dEZpZWxkX01vcmUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIHRvcDogNnB4Owp9CgpkaXYuSW5wdXRGaWVsZF9MaXN0Q29udGFpbmVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHotaW5kZXg6IDYxMDA7CiAgICBkaXNwbGF5OiBub25lOwogICAgdGV4dC1zaGFkb3c6IG5vbmU7Cn0KCmRpdi5JbnB1dEZpZWxkX1RyZWVDb250YWluZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbEJHRGFyayk7CiAgICBib3JkZXItdG9wOiBub25lOwogICAgb3ZlcmZsb3cteTogYXV0bzsKICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgbGluZS1oZWlnaHQ6IDE4cHg7Cn0KCi5FeHBhbmRUb1RvcCBkaXYuSW5wdXRGaWVsZF9UcmVlQ29udGFpbmVyIHsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjY2NjOwogICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKfQoKZGl2LklucHV0RmllbGRfVG9vbGJhckNvbnRhaW5lciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xCR0xpZ2h0KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbEJHTWVkaXVtKTsKICAgIGJvcmRlci10b3A6IG5vbmU7CiAgICBsaW5lLWhlaWdodDogMjFweDsKICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgbWluLWhlaWdodDogMjFweDsKfQoKZGl2LklucHV0RmllbGRfVG9vbGJhckNvbnRhaW5lciB1bCB7CiAgICB3aWR0aDogMTAwJTsKICAgIGRpc3BsYXk6IHRhYmxlOwp9CgpkaXYuSW5wdXRGaWVsZF9Ub29sYmFyQ29udGFpbmVyIHVsIGxpIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCmRpdi5JbnB1dEZpZWxkX1Rvb2xiYXJDb250YWluZXIgdWwgbGk6YWZ0ZXIgewogICAgY29sb3I6ICNiYmI7CiAgICBjb250ZW50OiAifCI7CiAgICBmbG9hdDogcmlnaHQ7IAogICAgY3Vyc29yOiBkZWZhdWx0Owp9CgpkaXYuSW5wdXRGaWVsZF9Ub29sYmFyQ29udGFpbmVyIHVsIGxpOmxhc3QtY2hpbGQ6YWZ0ZXIgewogICAgZGlzcGxheTogbm9uZTsKfQoKLlJUTCBkaXYuSW5wdXRGaWVsZF9Ub29sYmFyQ29udGFpbmVyIHVsIGxpOmxhc3QtY2hpbGQ6YWZ0ZXIgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgouUlRMIGRpdi5JbnB1dEZpZWxkX1Rvb2xiYXJDb250YWluZXIgdWwgbGk6Zmlyc3QtY2hpbGQ6YWZ0ZXIgewogICAgZGlzcGxheTogbm9uZTsKfQoKZGl2LklucHV0RmllbGRfVG9vbGJhckNvbnRhaW5lciB1bCBsaSBhIHsKICAgIGNvbG9yOiB2YXIoLS1jb2xUZXh0RGFyayk7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW46IDJweCA1cHg7CiAgICBmb250LXNpemU6IDExcHg7CiAgICBsaW5lLWhlaWdodDogMTVweDsKfQoKZGl2LklucHV0RmllbGRfVG9vbGJhckNvbnRhaW5lciBpIHsKICAgIGNvbG9yOiB2YXIoLS1jb2xUZXh0RGFyayk7Cn0KCmRpdi5JbnB1dEZpZWxkX1Rvb2xiYXJDb250YWluZXIgdWwgbGkgYTpob3ZlciB7CiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tY29sSGlnaGxpZ2h0KTsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi5JbnB1dEZpZWxkX0NvbmZpcm0sCi5JbnB1dEZpZWxkX0ZpbHRlcnMuQWN0aXZlIHsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgouSW5wdXRGaWVsZF9GaWx0ZXJzTGlzdCB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jb2xCR0RhcmspOwogICAgei1pbmRleDogMTUwMDsKICAgIGxpbmUtaGVpZ2h0OiAxLjVlbTsKICAgIHdpZHRoOiAxMDAlOwogICAgZm9udC1zaXplOiAxMXB4Owp9CgouSW5wdXRGaWVsZF9GaWx0ZXJzTGlzdCBzcGFuIHsKICAgIG1hcmdpbi1yaWdodDogNXB4OwogICAgY3Vyc29yOiBkZWZhdWx0Owp9CgouSW5wdXRGaWVsZF9GaWx0ZXJzTGlzdCBpbnB1dFtkaXNhYmxlZF0gKyBzcGFuIHsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgIGNvbG9yOiB2YXIoLS1jb2xUZXh0TGlnaHQpOwp9CgovKioKICogQHN1YnNlY3Rpb24gIGpzVHJlZSB0aGVtZQogKi8KLmpzdHJlZS1JbnB1dEZpZWxkIHsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIGJvcmRlcjogbm9uZTsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1ub2RlLAouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1jaGlsZHJlbiwKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtY29udGFpbmVyLXVsIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMDsKICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IG5vbmU7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgouUlRMIC5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLW5vZGUsCi5SVEwgLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtY2hpbGRyZW4sCi5SVEwgLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtY29udGFpbmVyLXVsIHsKICAgIHRleHQtYWxpZ246IHJpZ2h0Owp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1ub2RlIHsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLW5vZGUuanN0cmVlLWhpZGRlbiB7CiAgICBkaXNwbGF5OiBub25lOwp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1hbmNob3IgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgY29sb3I6IHZhcigtLWNvbFRleHREYXJrKTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICBwYWRkaW5nOiAwIDRweCAwIDFweDsKICAgIG1hcmdpbjogMDsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLWFuY2hvcjpmb2N1cyB7CiAgICBvdXRsaW5lOiAwOwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtYW5jaG9yLAouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1hbmNob3I6bGluaywKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtYW5jaG9yOnZpc2l0ZWQsCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLWFuY2hvcjpob3ZlciwKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtYW5jaG9yOmFjdGl2ZSB7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBjb2xvcjogaW5oZXJpdDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtaWNvbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtaWNvbjplbXB0eSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtb2NsIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtbGVhZiA+IC5qc3RyZWUtb2NsIHsKICAgIGN1cnNvcjogZGVmYXVsdDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUgLmpzdHJlZS1vcGVuID4gLmpzdHJlZS1jaGlsZHJlbiB7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUgLmpzdHJlZS1jbG9zZWQgPiAuanN0cmVlLWNoaWxkcmVuLAouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZSAuanN0cmVlLWxlYWYgPiAuanN0cmVlLWNoaWxkcmVuIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLWFuY2hvciA+IC5qc3RyZWUtdGhlbWVpY29uIHsKICAgIG1hcmdpbi1yaWdodDogMnB4Owp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1uby1pY29ucyAuanN0cmVlLXRoZW1laWNvbiwKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtYW5jaG9yID4gLmpzdHJlZS10aGVtZWljb24taGlkZGVuIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLXJ0bCAuanN0cmVlLWFuY2hvciB7CiAgICBwYWRkaW5nOiAwIDFweCAwIDRweDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtcnRsIC5qc3RyZWUtYW5jaG9yID4gLmpzdHJlZS10aGVtZWljb24gewogICAgbWFyZ2luLWxlZnQ6IDJweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtcnRsIC5qc3RyZWUtbm9kZSB7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtcnRsIC5qc3RyZWUtY29udGFpbmVyLXVsID4gLmpzdHJlZS1ub2RlIHsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtaG92ZXJlZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9CgouanN0cmVlLUlucHV0RmllbGQgLkRpc2FibGVkID4gLmpzdHJlZS1hbmNob3IgewogICAgY29sb3I6IHZhcigtLWNvbFRleHRMaWdodCkgIWltcG9ydGFudDsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgIGN1cnNvcjogZGVmYXVsdDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtb3BlbiwKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtY2xvc2VkIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtd2hvbGVyb3ctdWwgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWluLXdpZHRoOiAxMDAlOwp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS13aG9sZXJvdy11bCAuanN0cmVlLWxlYWYgPiAuanN0cmVlLW9jbCB7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLXdob2xlcm93LXVsIC5qc3RyZWUtYW5jaG9yLAouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS13aG9sZXJvdy11bCAuanN0cmVlLWljb24gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS13aG9sZXJvdy11bCAuanN0cmVlLXdob2xlcm93IHsKICAgIHdpZHRoOiAxMDAlOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMDsKICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgdXNlci1zZWxlY3Q6IG5vbmU7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLXdob2xlcm93LXVsIC5qc3RyZWUtd2hvbGVyb3ctY2xpY2tlZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xCR01lZGl1bSk7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLXdob2xlcm93LXVsIC5qc3RyZWUtd2hvbGVyb3c6aG92ZXIsCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLXdob2xlcm93LXVsIC5qc3RyZWUtd2hvbGVyb3ctaG92ZXJlZCwKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtZm9jdXNlZCA+IC5qc3RyZWUtd2hvbGVyb3cgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sSG92ZXJMaWdodCk7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLXdob2xlcm93LXVsIC5qc3RyZWUtd2hvbGVyb3ctY2xpY2tlZDpob3ZlciwKLmpzdHJlZS1JbnB1dEZpZWxkIC5qc3RyZWUtd2hvbGVyb3ctdWwgLmpzdHJlZS13aG9sZXJvdy1jbGlja2VkLmpzdHJlZS13aG9sZXJvdy1ob3ZlcmVkLAouanN0cmVlLUlucHV0RmllbGQgLmpzdHJlZS1mb2N1c2VkID4gLmpzdHJlZS13aG9sZXJvdy1jbGlja2VkIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbEhvdmVyRGFyayk7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuRGlzYWJsZWQgPiAuanN0cmVlLXdob2xlcm93OmhvdmVyLAouanN0cmVlLUlucHV0RmllbGQgLkRpc2FibGVkID4gLmpzdHJlZS13aG9sZXJvdy1ob3ZlcmVkIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbEJHRGFyayk7CiAgICBjdXJzb3I6IGRlZmF1bHQ7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuRGlzYWJsZWQuanN0cmVlLW9wZW4gPiAuanN0cmVlLWFuY2hvciwKLmpzdHJlZS1JbnB1dEZpZWxkIC5EaXNhYmxlZC5qc3RyZWUtY2xvc2VkID4gLmpzdHJlZS1hbmNob3IgewogICAgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLWNsaWNrZWQgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCA0cHggMCAxcHggIWltcG9ydGFudDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLmpzdHJlZS1ydGwgLmpzdHJlZS1ub2RlIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFDQVFNQUFBQjQ5STVHQUFBQUJsQk1WRVVBQUFBZEhSdkVrQ3djQUFBQUFYUlNUbE1BUU9iWVpnQUFBQXhKUkVGVUNOZGpBQU1PQmdBQUdBQUpNd1FIZFFBQUFBQkpSVTVFcmtKZ2dnPT0iKTsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgMXB4OwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC15Owp9CgouanN0cmVlLUlucHV0RmllbGQuanN0cmVlLXJ0bCAuanN0cmVlLWxhc3QgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZC5qc3RyZWUtcnRsIC5qc3RyZWUtb3BlbiA+IC5qc3RyZWUtb2NsIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0xMzVweCAtMzlweDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLmpzdHJlZS1ydGwgLmpzdHJlZS1jbG9zZWQgPiAuanN0cmVlLW9jbCB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTAzcHggLTM5cHg7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZC5qc3RyZWUtcnRsIC5qc3RyZWUtbGVhZiA+IC5qc3RyZWUtb2NsIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IC03MXB4IC0zOXB4Owp9CgouanN0cmVlLUlucHV0RmllbGQuanN0cmVlLXJ0bCA+IC5qc3RyZWUtbm8tZG90cyAuanN0cmVlLW5vZGUsCi5qc3RyZWUtSW5wdXRGaWVsZC5qc3RyZWUtcnRsID4gLmpzdHJlZS1uby1kb3RzIC5qc3RyZWUtbGVhZiA+IC5qc3RyZWUtb2NsIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Owp9CgouanN0cmVlLUlucHV0RmllbGQuanN0cmVlLXJ0bCA+IC5qc3RyZWUtbm8tZG90cyAuanN0cmVlLW9wZW4gPiAuanN0cmVlLW9jbCB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzlweCAtMzlweDsKfQouanN0cmVlLUlucHV0RmllbGQuanN0cmVlLXJ0bCA+IC5qc3RyZWUtbm8tZG90cyAuanN0cmVlLWNsb3NlZCA+IC5qc3RyZWUtb2NsIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IC03cHggLTM5cHg7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLXRoZW1laWNvbi1jdXN0b20gewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOwp9CgouanN0cmVlLUlucHV0RmllbGQuanN0cmVlLXJ0bCAuanN0cmVlLW5vZGUgewogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJJQUFBQUNBUU1BQUFCdjFoNlBBQUFBQmxCTVZFVUFBQUFkSFJ2RWtDd2NBQUFBQVhSU1RsTUFRT2JZWmdBQUFBeEpSRUZVQ05kakFBTUhCZ0FBaUFCQkk0Z3o5QUFBQUFCSlJVNUVya0pnZ2c9PScpOwp9CgouanN0cmVlLUlucHV0RmllbGQuanN0cmVlLXJ0bCAuanN0cmVlLWxhc3QgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLXNlYXJjaCB7CiAgICBmb250LXN0eWxlOiBpdGFsaWM7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLW5vLW1hdGNoIC5qc3RyZWUtb2NsIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZCAuanN0cmVlLW5vLW1hdGNoIHsKICAgIG1hcmdpbi1sZWZ0OiAycHggIWltcG9ydGFudDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLmpzdHJlZS1ydGwgLmpzdHJlZS1uby1tYXRjaCB7CiAgICBtYXJnaW4tcmlnaHQ6IDJweCAhaW1wb3J0YW50Owp9CgovKioKICogQHN1YnNlY3Rpb24gIGpzVHJlZSB0aGVtZSAtIFRyZWUgdmFyaWFudAogKi8KLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgLmpzdHJlZS1ub2RlIHsKICAgIG1pbi1oZWlnaHQ6IDE4cHg7CiAgICBsaW5lLWhlaWdodDogMThweDsKICAgIG1hcmdpbi1sZWZ0OiAxOHB4OwogICAgbWluLXdpZHRoOiAxOHB4Owp9CgouUlRMIC5qc3RyZWUtSW5wdXRGaWVsZC1UcmVlIC5qc3RyZWUtbm9kZSB7CiAgICBtYXJnaW4tcmlnaHQ6IDE4cHg7CiAgICBtYXJnaW4tbGVmdDogMDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgPiAuanN0cmVlLWNvbnRhaW5lci11bCA+IC5qc3RyZWUtbm9kZSwKLlJUTCAuanN0cmVlLUlucHV0RmllbGQtVHJlZSA+IC5qc3RyZWUtY29udGFpbmVyLXVsID4gLmpzdHJlZS1ub2RlIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgouanN0cmVlLUlucHV0RmllbGQtVHJlZSAuanN0cmVlLWFuY2hvciB7CiAgICBoZWlnaHQ6IDE4cHg7CiAgICBsaW5lLWhlaWdodDogMThweDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgLmpzdHJlZS1pY29uIHsKICAgIHdpZHRoOiAxOHB4OwogICAgaGVpZ2h0OiAxOHB4OwogICAgbGluZS1oZWlnaHQ6IDE4cHg7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZC1UcmVlIC5qc3RyZWUtaWNvbjplbXB0eSB7CiAgICB3aWR0aDogMThweDsKICAgIGhlaWdodDogMThweDsKICAgIGxpbmUtaGVpZ2h0OiAxOHB4Owp9CgouanN0cmVlLUlucHV0RmllbGQtVHJlZS5qc3RyZWUtcnRsIC5qc3RyZWUtbm9kZSB7CiAgICBtYXJnaW4tcmlnaHQ6IDE4cHg7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZC1UcmVlIC5qc3RyZWUtd2hvbGVyb3cgewogICAgaGVpZ2h0OiAxOHB4Owp9CgouanN0cmVlLUlucHV0RmllbGQtVHJlZSAuanN0cmVlLW5vZGUsCi5qc3RyZWUtSW5wdXRGaWVsZC1UcmVlIC5qc3RyZWUtaWNvbiB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltZy9pbnB1dGZpZWxkX3RyZWUucG5nJyk7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZC1UcmVlIC5qc3RyZWUtbm9kZSB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjk1cHggLTdweDsKICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteTsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgLmpzdHJlZS1sYXN0IHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Owp9CgouanN0cmVlLUlucHV0RmllbGQtVHJlZSAuanN0cmVlLW9wZW4gPiAuanN0cmVlLW9jbCB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTM1cHggLTdweDsKfQoKLlJUTCAuanN0cmVlLUlucHV0RmllbGQtVHJlZSAuanN0cmVlLW9wZW4gPiAuanN0cmVlLW9jbCB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTM1cHggLTM5cHg7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZC1UcmVlIC5qc3RyZWUtY2xvc2VkID4gLmpzdHJlZS1vY2wgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEwM3B4IC03cHg7Cn0KCi5SVEwgLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgLmpzdHJlZS1jbG9zZWQgPiAuanN0cmVlLW9jbCB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTAzcHggLTM5cHg7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZC1UcmVlIC5qc3RyZWUtbGVhZiA+IC5qc3RyZWUtb2NsIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IC03MXB4IC03cHg7Cn0KCi5SVEwgLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgLmpzdHJlZS1sZWFmID4gLmpzdHJlZS1vY2wgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTcxcHggLTM5cHg7Cn0KCi5qc3RyZWUtSW5wdXRGaWVsZC1UcmVlIC5qc3RyZWUtdGhlbWVpY29uIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0yNjNweCAtN3B4Owp9CgouUlRMIC5qc3RyZWUtSW5wdXRGaWVsZC1UcmVlIC5qc3RyZWUtdGhlbWVpY29uIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0yNjNweCAtMzlweDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgPiAuanN0cmVlLW5vLWRvdHMgLmpzdHJlZS1ub2RlLAouanN0cmVlLUlucHV0RmllbGQtVHJlZSA+IC5qc3RyZWUtbm8tZG90cyAuanN0cmVlLWxlYWYgPiAuanN0cmVlLW9jbCB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgPiAuanN0cmVlLW5vLWRvdHMgLmpzdHJlZS1vcGVuID4gLmpzdHJlZS1vY2wgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTM5cHggLTdweDsKfQoKLlJUTCAuanN0cmVlLUlucHV0RmllbGQtVHJlZSA+IC5qc3RyZWUtbm8tZG90cyAuanN0cmVlLW9wZW4gPiAuanN0cmVlLW9jbCB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzlweCAtMzlweDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgPiAuanN0cmVlLW5vLWRvdHMgLmpzdHJlZS1jbG9zZWQgPiAuanN0cmVlLW9jbCB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtN3B4IC03cHg7Cn0KCi5SVEwgLmpzdHJlZS1JbnB1dEZpZWxkLVRyZWUgPiAuanN0cmVlLW5vLWRvdHMgLmpzdHJlZS1jbG9zZWQgPiAuanN0cmVlLW9jbCB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtN3B4IC0zOXB4Owp9CgovKioKICogQHN1YnNlY3Rpb24gIGpzVHJlZSB0aGVtZSAtIE5vIFRyZWUgdmFyaWFudAogKi8KLmpzdHJlZS1JbnB1dEZpZWxkLU5vVHJlZSAuanN0cmVlLW5vZGUgewogICAgbWluLWhlaWdodDogMThweDsKICAgIGxpbmUtaGVpZ2h0OiAxOHB4OwogICAgbWFyZ2luLWxlZnQ6IDJweDsKICAgIG1pbi13aWR0aDogMThweDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLU5vVHJlZSAuanN0cmVlLWFuY2hvciB7CiAgICBoZWlnaHQ6IDE4cHg7CiAgICBsaW5lLWhlaWdodDogMThweDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLU5vVHJlZSAuanN0cmVlLWljb24gewogICAgZGlzcGxheTogbm9uZTsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLU5vVHJlZS5qc3RyZWUtcnRsIC5qc3RyZWUtbm9kZSB7CiAgICBtYXJnaW4tcmlnaHQ6IDJweDsKfQoKLmpzdHJlZS1JbnB1dEZpZWxkLU5vVHJlZSAuanN0cmVlLXdob2xlcm93IHsKICAgIGhlaWdodDogMThweDsKfQoKfSAvKiBlbmQgQG1lZGlhICovCg==</File>
        <File Location="var/httpd/htdocs/js/Core.UI.Dialog.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vICRvcmlnaW46IG90b2JvIC0gNmVmZGM3YmYyYTMzMjUyNzdjZDc5YTYwZjBmMjQwN2Y4YWQ1OWU4NyAtIHZhci9odHRwZC9odGRvY3MvanMvQ29yZS5VSS5EaWFsb2cuanMKLy8gLS0KLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKLy8gdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKLy8gRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCi8vIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCi8vIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgovLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQovLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLy8gLS0KCiJ1c2Ugc3RyaWN0IjsKCnZhciBDb3JlID0gQ29yZSB8fCB7fTsKQ29yZS5VSSA9IENvcmUuVUkgfHwge307CgovKioKICogQG5hbWVzcGFjZSBDb3JlLlVJLkRpYWxvZwogKiBAbWVtYmVyb2YgQ29yZS5VSQogKiBAYXV0aG9yCiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIENvbnRhaW5zIHRoZSBjb2RlIGZvciB0aGUgZGlmZmVyZW50IGRpYWxvZ3MuCiAqLwpDb3JlLlVJLkRpYWxvZyA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIERpYWxvZ0NvdW50ZXIKICAgICAqIEBtZW1iZXJvZiBDb3JlLlVJLkRpYWxvZwogICAgICogQG1lbWJlciB7TnVtYmVyfQogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIE51bWJlciBvZiB1c2VkL29wZW5lZCBkaWFsb2dzIG9uIGEgcGFnZS4gVXNlZCB0byByZXN0b3JlIHRoZSBjb3JyZWN0IEhUTUwgYmFja3VwIGFmdGVyIGRpYWxvZyBpcyBjbG9zZWQuCiAgICAgKi8KICAgIHZhciBEaWFsb2dDb3VudGVyID0gMTsKCiAgICAvKgogICAgICogY2hlY2sgZGVwZW5kZW5jaWVzIGZpcnN0CiAgICAgKi8KICAgIGlmICghQ29yZS5EZWJ1Zy5DaGVja0RlcGVuZGVuY3koJ0NvcmUuVUkuRGlhbG9nJywgJyQoW10pLmRyYWdnYWJsZScsICdqUXVlcnkgVUkgZHJhZ2dhYmxlJykpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBpZiAoIUNvcmUuRGVidWcuQ2hlY2tEZXBlbmRlbmN5KCdDb3JlLlVJLkRpYWxvZycsICdDb3JlLkNvbmZpZycsICdDb3JlLkNvbmZpZycpKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgaWYgKCFDb3JlLkRlYnVnLkNoZWNrRGVwZW5kZW5jeSgnQ29yZS5VSS5EaWFsb2cnLCAnQ29yZS5VSS5JbnB1dEZpZWxkcycsICdDb3JlLlVJLklucHV0RmllbGRzJykpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICogQG5hbWUgQWRqdXN0U2Nyb2xsYWJsZUhlaWdodAogICAgICogQG1lbWJlcm9mIENvcmUuVUkuRGlhbG9nCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gQWxsb3dBdXRvR3JvdyAtIElmIEFsbG93QXV0b0dyb3cgaXMgc2V0LCBhdXRvLXJlc2l6aW5nIHNob3VsZCBiZSBwb3NzaWJsZS4KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBBZGp1c3RzIHRoZSBzY3JvbGxhYmxlIGlubmVyIGNvbnRhaW5lciBvZiB0aGUgZGlhbG9nIGFmdGVyIGV2ZXJ5IHJlc2l6aW5nLgogICAgICovCiAgICBmdW5jdGlvbiBBZGp1c3RTY3JvbGxhYmxlSGVpZ2h0KEFsbG93QXV0b0dyb3cpIHsKICAgICAgICAvLyBDaGVjayB3aW5kb3cgaGVpZ2h0IGFuZCBhZGp1c3QgdGhlIHNjcm9sbGFibGUgaGVpZ2h0IG9mIElubmVyQ29udGVudAogICAgICAgIC8vIENhbGN1bGF0aW9uOgogICAgICAgIC8vIFdpbmRvdyBoZWlnaHQKICAgICAgICAvLyAtIHRvcCBtYXJnaW4gb2YgZGlhbG9nIHR3aWNlIChmb3IgdG9wIGFuZCBib3R0b20pIC0gb25seSB1c2UgdGhpcyBmb3IgYmlnIGRpYWxvZyB3aW5kb3dzCiAgICAgICAgLy8gLSBzb21lIHN0YXRpYyBwaXhlbHMgZm9yIEhlYWRlciBhbmQgRm9vdGVyIG9mIGRpYWxvZwogICAgICAgIHZhciBDb250ZW50U2Nyb2xsSGVpZ2h0LAogICAgICAgICAgICBXaW5kb3dIZWlnaHQgPSAkKHdpbmRvdykuaGVpZ2h0KCksCiAgICAgICAgICAgIFdpbmRvd1Njcm9sbFRvcCA9ICQod2luZG93KS5zY3JvbGxUb3AoKSwKICAgICAgICAgICAgRGlhbG9nVG9wTWFyZ2luID0gJCgnLkRpYWxvZzp2aXNpYmxlJykub2Zmc2V0KCkudG9wLAogICAgICAgICAgICBEaWFsb2dIZWlnaHQgPSAkKCcuRGlhbG9nOnZpc2libGUnKS5oZWlnaHQoKTsKCiAgICAgICAgLy8gaWYgZGlhbG9nIGhlaWdodCBpcyBtb3JlIHRoYW4gMzAwcHggcmVjYWxjdWxhdGUgd2lkdGggb2YgSW5uZXJDb250ZW50IHRvIG1ha2UgaXQgc2Nyb2xsYWJsZQogICAgICAgIC8vIGlmIGRpYWxvZyBpcyBzbWFsbGVyIHRoYW4gMzAwcHggdGhpcyBpcyBub3QgbmVjZXNzYXJ5CiAgICAgICAgLy8gaWYgQWxsb3dBdXRvR3JvdyBpcyBzZXQsIGF1dG8tcmVzaXppbmcgc2hvdWxkIGJlIHBvc3NpYmxlCiAgICAgICAgLy8gaWYgaW4gYSBtb2JpbGUgZW52aXJvbm1lbnQgYW5kIGEgc21hbGwgc2NyZWVuLCB1c2UgYXMgbXVjaCB3aW5kb3cgaGVpZ2h0IGFzIHBvc3NpYmxlCiAgICAgICAgaWYgKCQoJy5EaWFsb2c6dmlzaWJsZScpLmhhc0NsYXNzKCdGdWxsc2l6ZScpKSB7CiAgICAgICAgICAgIENvbnRlbnRTY3JvbGxIZWlnaHQgPSBXaW5kb3dIZWlnaHQgLSA4MDsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoQWxsb3dBdXRvR3JvdyB8fCBEaWFsb2dIZWlnaHQgPiAzMDApIHsKICAgICAgICAgICAgQ29udGVudFNjcm9sbEhlaWdodCA9IFdpbmRvd0hlaWdodCAtICgoRGlhbG9nVG9wTWFyZ2luIC0gV2luZG93U2Nyb2xsVG9wKSAqIDIpIC0gMTAwOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgQ29udGVudFNjcm9sbEhlaWdodCA9IDIwMDsKICAgICAgICB9CiAgICAgICAgJCgnLkRpYWxvZzp2aXNpYmxlIC5Db250ZW50IC5Jbm5lckNvbnRlbnQnKS5jc3MoJ21heC1oZWlnaHQnLCBDb250ZW50U2Nyb2xsSGVpZ2h0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKiBAbmFtZSBGb2N1c0ZpcnN0RWxlbWVudAogICAgICogQG1lbWJlcm9mIENvcmUuVUkuRGlhbG9nCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBGb2N1c2VzIHRoZSBmaXJzdCBlbGVtZW50IHdpdGhpbiB0aGUgZGlhbG9nLgogICAgICovCiAgICBmdW5jdGlvbiBGb2N1c0ZpcnN0RWxlbWVudCgpIHsKICAgICAgICB2YXIgJEZpcnN0RWxlbWVudCA9ICQoJ2Rpdi5EaWFsb2c6dmlzaWJsZSAuQ29udGVudCcpCiAgICAgICAgICAgICAgICAuZmluZCgnYTp2aXNpYmxlLCBpbnB1dDp2aXNpYmxlLCB0ZXh0YXJlYTp2aXNpYmxlLCBzZWxlY3Q6dmlzaWJsZSwgYnV0dG9uOnZpc2libGUnKQogICAgICAgICAgICAgICAgLmZpbHRlcignOmZpcnN0JyksCiAgICAgICAgICAgICRGb2N1c0ZpZWxkOwoKICAgICAgICBpZiAoISRGaXJzdEVsZW1lbnQgfHwgISRGaXJzdEVsZW1lbnQubGVuZ3RoKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIElmIGZpcnN0IGVsZW1lbnQgaXMgbW9kZXJuaXplZCBpbnB1dCBmaWVsZCwgcHJlcGVuZCBhIHNlbWktaGlkZGVuIHRleHQgZmllbGQgYW5kIHNldCBmb2N1cyBvbiBpdCBpbnN0ZWFkLgogICAgICAgIC8vICAgVGhpcyB3aWxsIHByZXZlbnQgYXV0b21hdGljIGV4cGFuc2lvbiBvZiB0aGUgaW5wdXQgZmllbGQsIGJ1dCBzdGlsbCBtb3ZlIHRhYiBpbmRleCB0byB0aGUgZGlhbG9nIGFuZCBhbGxvdwogICAgICAgIC8vICAgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gaW4gaXQuIFNlZSBidWcjMTI2ODEgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgaWYgKCRGaXJzdEVsZW1lbnQuaGFzQ2xhc3MoJ0lucHV0RmllbGRfU2VhcmNoJykpIHsKICAgICAgICAgICAgJEZvY3VzRmllbGQgPSAkKCc8aW5wdXQvPicpCiAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ0ZvY3VzRmllbGQnKQogICAgICAgICAgICAgICAgLmluc2VydEJlZm9yZSgkRmlyc3RFbGVtZW50KTsKICAgICAgICAgICAgJEZvY3VzRmllbGQuZm9jdXMoKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRGaXJzdEVsZW1lbnQuZm9jdXMoKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICogQG5hbWUgSW5pdEtleUV2ZW50CiAgICAgKiBAbWVtYmVyb2YgQ29yZS5VSS5EaWFsb2cKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtCb29sZWFufSBDbG9zZU9uRXNjYXBlIC0gSWYgc2V0IHRvIHRydWUsIHRoZSBlc2NhcGUga2V5IGlzIGNoZWNrZWQgZm9yIGNsb3NpbmcgdGhlIGRpYWxvZy4KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBJbml0aWFsaXplcyB0aGUga2V5IGV2ZW50IGxvZ2dlciBmb3IgdGhlIGRpYWxvZy4KICAgICAqICAgICAgTXVzdCBiZSB1bmJpbmRlZCB3aGVuIGNsb3NpbmcgdGhlIGRpYWxvZy4KICAgICAqLwogICAgZnVuY3Rpb24gSW5pdEtleUV2ZW50KENsb3NlT25Fc2NhcGUpIHsKLy8gUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgLy8gdmFyICREaWFsb2cgPSAkKCdkaXYuRGlhbG9nOnZpc2libGUnKTsKICAgICAgICB2YXIgJERpYWxvZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gJCgnZGl2LkRpYWxvZzp2aXNpYmxlJyk7CiAgICAgICAgfTsKLy8gRU8gU2VydmljZUNhdGFsb2cKICAgICAgICAvKgogICAgICAgICAqIE9wZXJhIGNhbid0IHByZXZlbnQgdGhlIGRlZmF1bHQgYWN0aW9uIG9mIHNwZWNpYWwga2V5cyBvbiBrZXlkb3duLiBUaGF0J3Mgd2h5IHdlIG5lZWQgYSBzcGVjaWFsIGtleXByZXNzIGV2ZW50IGhlcmUsCiAgICAgICAgICogdG8gcHJldmVudCB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIHRoZSBzcGVjaWFsIGtleXMuCiAgICAgICAgICogU2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50cy9rZXlzLmh0bWwgZm9yIGRldGFpbHMKICAgICAgICAgKi8KICAgICAgICAkKGRvY3VtZW50KS5vZmYoJ2tleXByZXNzLkRpYWxvZycpLm9uKCdrZXlwcmVzcy5EaWFsb2cnLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICAgICAgaWYgKCQuYnJvd3Nlci5vcGVyYSAmJiAoRXZlbnQua2V5Q29kZSA9PT0gOSB8fCAoRXZlbnQua2V5Q29kZSA9PT0gMjcgJiYgQ2xvc2VPbkVzY2FwZSkpKSB7CiAgICAgICAgICAgICAgICBFdmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9KS5vZmYoJ2tleWRvd24uRGlhbG9nJykub24oJ2tleWRvd24uRGlhbG9nJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgIHZhciAkVGFiYmFibGVzLCAkRmlyc3QsICRMYXN0OwoKICAgICAgICAgICAgLy8gVGFiIHByZXNzZWQKICAgICAgICAgICAgaWYgKEV2ZW50LmtleUNvZGUgPT09IDkpIHsKICAgICAgICAgICAgICAgIC8vIDp0YWJiYWJsZSBwcm9iYWJseSBjb21lcyBmcm9tIGpxdWVyeSBVSQovLyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgICAgICAgICAgICAgIC8vICRUYWJiYWJsZXMgPSAkKCdhOnZpc2libGUsIGlucHV0OnZpc2libGUsIHRleHRhcmVhOnZpc2libGUsIHNlbGVjdDp2aXNpYmxlLCBidXR0b246dmlzaWJsZScsICREaWFsb2cpOwogICAgICAgICAgICAgICAgJFRhYmJhYmxlcyA9ICQoJ2E6dmlzaWJsZSwgaW5wdXQ6dmlzaWJsZSwgdGV4dGFyZWE6dmlzaWJsZSwgc2VsZWN0OnZpc2libGUsIGJ1dHRvbjp2aXNpYmxlJywgJERpYWxvZygpKTsKLy8gRU8gU2VydmljZUNhdGFsb2cKICAgICAgICAgICAgICAgICRGaXJzdCA9ICRUYWJiYWJsZXMuZmlsdGVyKCc6Zmlyc3QnKTsKICAgICAgICAgICAgICAgICRMYXN0ID0gJFRhYmJhYmxlcy5maWx0ZXIoJzpsYXN0Jyk7CgogICAgICAgICAgICAgICAgaWYgKEV2ZW50LnRhcmdldCA9PT0gJExhc3RbMF0gJiYgIUV2ZW50LnNoaWZ0S2V5KSB7CiAgICAgICAgICAgICAgICAgICAgJEZpcnN0LmZvY3VzKDEpOwogICAgICAgICAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoRXZlbnQudGFyZ2V0ID09PSAkRmlyc3RbMF0gJiYgRXZlbnQuc2hpZnRLZXkpIHsKICAgICAgICAgICAgICAgICAgICAkTGFzdC5mb2N1cygxKTsKICAgICAgICAgICAgICAgICAgICBFdmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBFc2NhcGUgcHJlc3NlZCBhbmQgQ2xvc2VPbkVzY2FwZSBpcyB0cnVlCiAgICAgICAgICAgIGVsc2UgaWYgKEV2ZW50LmtleUNvZGUgPT09IDI3ICYmIENsb3NlT25Fc2NhcGUpIHsKLy8gUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCiAgICAgICAgICAgICAgICBUYXJnZXROUy5DbG9zZURpYWxvZygkRGlhbG9nKCkpOwovLyBFTyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICogQG5hbWUgRGVmYXVsdFN1Ym1pdEZ1bmN0aW9uCiAgICAgKiBAbWVtYmVyb2YgQ29yZS5VSS5EaWFsb2cKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFRoZSBkZWZhdWx0IHN1Ym1pdCBmdW5jdGlvbiBpbiB0aGUgZGlhbG9nLgogICAgICovCiAgICBmdW5jdGlvbiBEZWZhdWx0U3VibWl0RnVuY3Rpb24oKSB7CiAgICAgICAgJCgnLkRpYWxvZzp2aXNpYmxlIGZvcm0nKS5zdWJtaXQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKiBAbmFtZSBEZWZhdWx0Q2xvc2VGdW5jdGlvbgogICAgICogQG1lbWJlcm9mIENvcmUuVUkuRGlhbG9nCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBjbG9zZSB0aGUgZGlhbG9nLgogICAgICovCiAgICBmdW5jdGlvbiBEZWZhdWx0Q2xvc2VGdW5jdGlvbigpIHsKICAgICAgICBUYXJnZXROUy5DbG9zZURpYWxvZygkKCcuRGlhbG9nOnZpc2libGUnKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAbmFtZSBTaG93RGlhbG9nCiAgICAgKiBAbWVtYmVyb2YgQ29yZS5VSS5EaWFsb2cKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtPYmplY3R9IFBhcmFtcyAtIFRoZSBkaWZmZXJlbnQgY29uZmlnIG9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFBhcmFtcy5Nb2RhbCAtIFNob3dzIGEgZGFyayBiYWNrZ3JvdW5kIG92ZXJsYXkgYmVoaW5kIHRoZSBkaWFsb2cgKGRlZmF1bHQ6IGZhbHNlKQogICAgICogQHBhcmFtIHtTdHJpbmd9IFBhcmFtcy5UeXBlIC0gQWxlcnR8U2VhcmNoIChkZWZhdWx0OiB1bmRlZmluZWQpIERlZmluZXMgYSBzcGVjaWFsIHR5cGUgb2YgZGlhbG9nLgogICAgICogQHBhcmFtIHtTdHJpbmd9IFBhcmFtcy5UaXRsZSAtIERlZmluZXMgdGhlIHRpdGxlIG9mIHRoZSBkaWFsb2cgd2luZG93IChkZWZhdWx0OiB1bmRlZmluZWQpLgogICAgICogQHBhcmFtIHtTdHJpbmd9IFBhcmFtcy5IZWFkbGluZSAtIERlZmluZXMgYSBzcGVjaWFsIGhlYWRsaW5lIHdpdGhpbiB0aGUgZGlhbG9nIHdpbmRvdyAoZGVmYXVsdDogdW5kZWZpbmVkKS4gT25seSB1c2VkIGZvciBUeXBlIEFsZXJ0LgogICAgICogQHBhcmFtIHtTdHJpbmd9IFBhcmFtcy5UZXh0IC0gVGhlIHRleHQgd2hpY2ggaXMgb3V0cHV0dGV0IGluIHRoZSBkaWFsb2cgd2luZG93IChkZWZhdWx0OiB1bmRlZmluZWQpLiBPbmx5IHVzZWQgZm9yIFR5cGUgQWxlcnQuCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gUGFyYW1zLkhUTUwgLSBVc2VkIGZvciBjb250ZW50IGRpYWxvZyB3aW5kb3dzLiBDb250YWlucyBhIGNvbXBsZXRlIEhUTUwgc25pcHBldCBvciBhbiBqUXVlcnkgb2JqZWN0IHdpdGggY29udGFpbmluZyBIVE1MIChkZWZhdWx0OiB1bmRlZmluZWQpLgogICAgICogQHBhcmFtIHtOdW1iZXJ9IFBhcmFtcy5Qb3NpdGlvblRvcCAtIERlZmluZXMgdGhlIHRvcCBwb3NpdGlvbiBvZiB0aGUgZGlhbG9nIHdpbmRvdyAoZGVmYXVsdDogdW5kZWZpbmVkKS4KICAgICAqIEBwYXJhbSB7TnVtYmVyfSBQYXJhbXMuUG9zaXRpb25Cb3R0b20gLSBEZWZpbmVzIHRoZSBib3R0b20gcG9zaXRpb24gb2YgdGhlIGRpYWxvZyB3aW5kb3cgKGRlZmF1bHQ6IHVuZGVmaW5lZCkuCiAgICAgKiBAcGFyYW0ge051bWJlcnxTdHJpbmd9IFBhcmFtcy5Qb3NpdGlvbkxlZnQgLSBEZWZpbmVzIHRoZSBsZWZ0IHBvc2l0aW9uIG9mIHRoZSBkaWFsb2cgd2luZG93LiAnQ2VudGVyJyBjZW50ZXJzIHRoZSB3aW5kb3cgKGRlZmF1bHQ6IHVuZGVmaW5lZCkuCiAgICAgKiBAcGFyYW0ge051bWJlcn0gUGFyYW1zLlBvc2l0aW9uUmlnaHQgLSBEZWZpbmVzIHRoZSByaWdodCBwb3NpdGlvbiBvZiB0aGUgZGlhbG9nIHdpbmRvdyAoZGVmYXVsdDogdW5kZWZpbmVkKS4KICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gUGFyYW1zLkNsb3NlT25DbGlja091dHNpZGUgLSBJZiB0cnVlLCBjbGlja2luZyBvdXRzaWRlIHRoZSBkaWFsb2cgY2xvc2VzIHRoZSBkaWFsb2cgKGRlZmF1bHQ6IGZhbHNlKS4KICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gUGFyYW1zLkNsb3NlT25Fc2NhcGUgLSBJZiB0cnVlLCBwcmVzc2luZyBlc2NhcGUga2V5IGNsb3NlcyB0aGUgZGlhbG9nIChkZWZhdWx0OiBmYWxzZSkuCiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFBhcmFtcy5BbGxvd0F1dG9Hcm93IC0gSWYgdHJ1ZSwgdGhlIElubmVyQ29udGVudCBvZiB0aGUgZGlhbG9nIGNhbiByZXNpemUgdW50aWwgdGhlIG1heCB3aW5kb3cgaGVpZ2h0IGlzIHJlYWNoZWQsIGlmIGZhbHNlIChkZWZhdWx0KSwgSW5uZXJDb250ZW50IG9mIHNtYWxsIGRpYWxvZ3MgZG9lcyBub3QgcmVzaXplIG92ZXIgMjAwcHguCiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFBhcmFtcy5IaWRlSGVhZGVyIC0gSGlkZSB0aGUgaGVhZGVyIGJ5IHNldHRpbmcgdGhpcyB0byB0cnVlCiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFBhcmFtcy5IaWRlRm9vdGVyIC0gSGlkZSB0aGUgZm9vdGVyIGJ5IHNldHRpbmcgdGhpcyB0byB0cnVlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gUGFyYW1zLkJ1dHRvbnMgLSBBcnJheSBvZiBIYXNoZXMgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgKGJ1dHRvbnMgYXJlIHBsYWNlZCBpbiBhIGRpdiAiZm9vdGVyIiBvZiB0aGUgZGlhbG9nKToKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBQYXJhbXMuQnV0dG9ucy5MYWJlbCAtIFRleHQgb2YgdGhlIGJ1dHRvbi4KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBQYXJhbXMuQnV0dG9ucy5UeXBlIC0gJ1N1Ym1pdCd8J0Nsb3NlJyAoZGVmYXVsdDogbm9uZSkgU3BlY2lhbCB0eXBlIG9mIHRoZSBidXR0b24gLSBpbnZva2VzIGEgc3RhbmRhcmQgZnVuY3Rpb24uCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gUGFyYW1zLkJ1dHRvbnMuQ2xhc3MgLSBPcHRpb25hbCBjbGFzcyBwYXJhbWV0ZXJzIGZvciB0aGUgYnV0dG9uIGVsZW1lbnQuCiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBQYXJhbXMuQnV0dG9ucy5GdW5jdGlvbiAtIFRoZSBmdW5jdGlvbiB3aGljaCBpcyBleGVjdXRlZCBvbiBjbGljayAob3B0aW9uYWwpLgovLyBSb3RoZXIgT1NTIC8gU2VydmljZUNhdGFsb2cKICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gUGFyYW1zLlN0YWNrZWQgLSBJZiB0cnVlLCB0aGVuIGEgbmV3IGRpYWxvZyBhcHBlYXJzIG9uIHRvcCBvZiBleGlzdGluZyBvbmVzIChkZWZhdWx0OiBmYWxzZSkuCi8vIEVPIFNlcnZpY2VDYXRhbG9nCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhlIG1haW4gZGlhbG9nIGZ1bmN0aW9uIHVzZWQgZm9yIGFsbCBkaWZmZXJlbnQgdHlwZXMgb2YgZGlhbG9ncy4KICAgICAqLwogICAgVGFyZ2V0TlMuU2hvd0RpYWxvZyA9IGZ1bmN0aW9uKFBhcmFtcykgewoKICAgICAgICB2YXIgJERpYWxvZywgJENvbnRlbnQsICRCdXR0b25Gb290ZXIsIEhUTUxCYWNrdXAsIERpYWxvZ0NvcHksIERpYWxvZ0NvcHlTZWxlY3RvciwKICAgICAgICAgICAgRGlhbG9nSFRNTCwKICAgICAgICAgICAgRnVsbHNpemVNb2RlID0gZmFsc2UsCiAgICAgICAgICAgIEN1c3RvbWVySW50ZXJmYWNlID0gQ29yZS5Db25maWcuR2V0KCdTZXNzaW9uTmFtZScpID09PSBDb3JlLkNvbmZpZy5HZXQoJ0N1c3RvbWVyUGFuZWxTZXNzaW9uTmFtZScpOwoKLy8gUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCi8vICAgICAgICAgRGlhbG9nSFRNTCA9ICc8ZGl2IGNsYXNzPSJEaWFsb2ciPic7CiAgICAgICAgRGlhbG9nSFRNTCA9ICc8ZGl2IGNsYXNzPSJEaWFsb2ciJyArIChQYXJhbXMuU3RhY2tlZCA/ICcgZGF0YS1zdGFja2VkPSJzdGFja2VkIicgOiAnJykgKyAnPic7Ci8vIEVPIFNlcnZpY2VDYXRhbG9nCgogICAgICAgIGlmICghUGFyYW1zLkhpZGVIZWFkZXIpIHsKICAgICAgICAgICAgdmFyIENsb3NlSWNvbiA9IEN1c3RvbWVySW50ZXJmYWNlID8gJ29vb2ZvIG9vb2ZvLWNsb3NlJyA6ICdmYSBmYS10aW1lcyc7CiAgICAgICAgICAgIERpYWxvZ0hUTUwgKz0gJzxkaXYgY2xhc3M9IkhlYWRlciI+PGEgY2xhc3M9IkNsb3NlIiB0aXRsZT0iJyArIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCdDbG9zZSB0aGlzIGRpYWxvZycpICsgJyIgaHJlZj0iIyI+PGkgY2xhc3M9IicgKyBDbG9zZUljb24gKyAnIj48L2k+PC9hPjwvZGl2Pic7CiAgICAgICAgfQogICAgICAgIERpYWxvZ0hUTUwgKz0gJzxkaXYgY2xhc3M9IkNvbnRlbnQiPjwvZGl2Pic7CiAgICAgICAgaWYgKCFQYXJhbXMuSGlkZUZvb3RlcikgewogICAgICAgICAgICBEaWFsb2dIVE1MICs9ICc8ZGl2IGNsYXNzPSJGb290ZXIiPjwvZGl2Pic7CiAgICAgICAgfQogICAgICAgIERpYWxvZ0hUTUwgKz0gJzwvZGl2Pic7CgogICAgICAgIC8qKgogICAgICAgICAqIEBwcml2YXRlCiAgICAgICAgICogQG5hbWUgSGFuZGxlQ2xvc2luZ0FjdGlvbgogICAgICAgICAqIEBtZW1iZXJvZiBDb3JlLlVJLkRpYWxvZy5TaG93RGlhbG9nCiAgICAgICAgICogQGZ1bmN0aW9uCiAgICAgICAgICogQGRlc2NyaXB0aW9uCiAgICAgICAgICogICAgICBJZiBubyBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlIGNsb3NlIGlzIGdpdmVuICh2aWEgdGhlIEJ1dHRvbiBkZWZpbml0aW9uKSwKICAgICAgICAgKiAgICAgIHRoZSBkaWFsb2cgaXMganVzdCBjbG9zZWQuIE90aGVyd2lzZSB0aGUgZGVmaW5lZCBDbG9zZSBidXR0b24gaXMgdHJpZ2dlcmVkLAogICAgICAgICAqICAgICAgd2hpY2ggaW52b2tlcyB0aGUgY2FsbGJhY2sgYW5kIHRoZSBjbG9zaW5nIG9mIHRoZSBkaWFsb2cuCiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gSGFuZGxlQ2xvc2luZ0FjdGlvbigpIHsKICAgICAgICAgICAgdmFyICRDbG9zZUJ1dHRvbiA9ICQoJy5EaWFsb2c6dmlzaWJsZSBidXR0b24uQ2xvc2UnKTsKCiAgICAgICAgICAgIC8vIHB1Ymxpc2ggY2xvc2UgZXZlbnQKICAgICAgICAgICAgQ29yZS5BcHAuUHVibGlzaCgnRXZlbnQuVUkuRGlhbG9nLkNsb3NlRGlhbG9nLkNsb3NlJywgWyREaWFsb2ddKTsKCiAgICAgICAgICAgIC8vIEhpZGUgYW55IHBvc3NpYmx5IGV4aXN0aW5nIHRvb2x0aXBzLgogICAgICAgICAgICBpZiAoQ29yZS5Gb3JtICYmIENvcmUuRm9ybS5FcnJvclRvb2x0aXBzKSB7CiAgICAgICAgICAgICAgICBDb3JlLkZvcm0uRXJyb3JUb29sdGlwcy5IaWRlVG9vbHRpcCgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJENsb3NlQnV0dG9uLmxlbmd0aCkgewogICAgICAgICAgICAgICAgJENsb3NlQnV0dG9uLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBEZWZhdWx0Q2xvc2VGdW5jdGlvbigpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBAcHJpdmF0ZQogICAgICAgICAqIEBuYW1lIENhbGN1bGF0ZURpYWxvZ1Bvc2l0aW9uCiAgICAgICAgICogQG1lbWJlcm9mIENvcmUuVUkuRGlhbG9nLlNob3dEaWFsb2cKICAgICAgICAgKiBAZnVuY3Rpb24KICAgICAgICAgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcG9zaXRpb24gb2YgdGhlIGRpYWxvZy4KICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ3xOdW1iZXJ9IFBvc2l0aW9uIC0gVGhlIHBvc2l0aW9uIG9mIHRoZSBkaWFsb2cuCiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IFR5cGUgLSBDYW4gYmUgJ3RvcCcgb3IgJ2JvdHRvbScuCiAgICAgICAgICogQGRlc2NyaXB0aW9uCiAgICAgICAgICogICAgICBDYWxjdWxhdGVzIHRoZSBjb3JyZWN0IHBvc2l0aW9uIG9mIHRoZSBkaWFsb2csIGdpdmVuIGJ5IHRoZSBQb3NpdGlvbi4KICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiBDYWxjdWxhdGVEaWFsb2dQb3NpdGlvbihQb3NpdGlvbiwgVHlwZSkgewogICAgICAgICAgICB2YXIgU2Nyb2xsVG9wID0gJCh3aW5kb3cpLnNjcm9sbFRvcCgpLAogICAgICAgICAgICAgICAgV2luZG93SGVpZ2h0ID0gJCh3aW5kb3cpLmhlaWdodCgpOwoKICAgICAgICAgICAgaWYgKCBDdXN0b21lckludGVyZmFjZSApIHsKICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQgaXMgcG9zaXRpb25lZCAiZml4ZWQiCiAgICAgICAgICAgICAgICBTY3JvbGxUb3AgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBUeXBlID0gVHlwZSB8fCAndG9wJzsKICAgICAgICAgICAgLy8gY29udmVydCBQb3NpdGlvbiB0byBhIHN0cmluZyBzbyB0aGF0IG51bWJlcnMgY2FuIGJlIHBhc3NlZCB0b28KICAgICAgICAgICAgLy8gIChsYXRlciBzdHJpbmcgb3BlcmF0aW9ucyBhcmUgZXhlY3V0ZWQgb24gdGhhdCBvYmplY3QpCiAgICAgICAgICAgIFBvc2l0aW9uID0gUG9zaXRpb24udG9TdHJpbmcoKTsKCiAgICAgICAgICAgIC8vIHBvc2l0aW9uIGlzIGluIHBlcmNlbnQKICAgICAgICAgICAgaWYgKFBvc2l0aW9uLm1hdGNoKC8lLykpIHsKICAgICAgICAgICAgICAgIFBvc2l0aW9uID0gcGFyc2VJbnQoUG9zaXRpb24ucmVwbGFjZSgvJS8sICcnKSwgMTApOwogICAgICAgICAgICAgICAgaWYgKFR5cGUgPT09ICd0b3AnKSB7CiAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gPSBwYXJzZUludChXaW5kb3dIZWlnaHQgKiAoUG9zaXRpb24gLyAxMDApLCAxMCkgKyBTY3JvbGxUb3A7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChUeXBlID09PSAnYm90dG9tJykgewogICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uID0gV2luZG93SGVpZ2h0ICsgU2Nyb2xsVG9wIC0gcGFyc2VJbnQoV2luZG93SGVpZ2h0ICogKFBvc2l0aW9uIC8gMTAwKSwgMTApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIGhhbmRsZSBhcyBweAogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIFBvc2l0aW9uID0gcGFyc2VJbnQoUG9zaXRpb24ucmVwbGFjZSgvcHgvLCAnJyksIDEwKTsKICAgICAgICAgICAgICAgIGlmIChUeXBlID09PSAndG9wJykgewogICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uID0gUG9zaXRpb24gKyBTY3JvbGxUb3A7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChUeXBlID09PSAnYm90dG9tJykgewogICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uID0gV2luZG93SGVpZ2h0ICsgU2Nyb2xsVG9wIC0gUG9zaXRpb247CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAoUG9zaXRpb24gKyAncHgnKTsKICAgICAgICB9CgogICAgICAgIENvcmUuQXBwLlB1Ymxpc2goJ0V2ZW50LlVJLkRpYWxvZy5TaG93RGlhbG9nLkJlZm9yZU9wZW4nKTsKCiAgICAgICAgLy8gQ2xvc2UgYWxsIG9wZW5lZCBkaWFsb2dzCi8vIFJvdGhlciBPU1MgLyBTZXJ2aWNlQ2F0YWxvZwovLyAgICAgICAgIGlmICgkKCcuRGlhbG9nOnZpc2libGUnKS5sZW5ndGgpIHsKICAgICAgICBpZiAoJCgnLkRpYWxvZzp2aXNpYmxlJykubGVuZ3RoICYmICFQYXJhbXMuU3RhY2tlZCkgewovLyBFTyBTZXJ2aWNlQ2F0YWxvZwogICAgICAgICAgICBUYXJnZXROUy5DbG9zZURpYWxvZygkKCcuRGlhbG9nOnZpc2libGUnKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBJZiBEaWFsb2cgaXMgYSBtb2RhbCBkaWFsb2csIGluaXRpYWxpemUgb3ZlcmxheQogICAgICAgIGlmIChQYXJhbXMuTW9kYWwpIHsKICAgICAgICAgICAgJCgnPGRpdiBpZD0iT3ZlcmxheSIgdGFiaW5kZXg9Ii0xIj4nKS5hcHBlbmRUbygnYm9keScpOwogICAgICAgICAgICAkKCdib2R5JykuY3NzKHsKICAgICAgICAgICAgICAgICdvdmVyZmxvdyc6ICdoaWRkZW4nCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAvLyQoJyNPdmVybGF5JykuaGVpZ2h0KCQoZG9jdW1lbnQpLmhlaWdodCgpKS5jc3MoJ3RvcCcsIDApOwoKICAgICAgICAgICAgLy8gSWYgdGhlIHVuZGVybHlpbmcgcGFnZSBpcyBwZXJoYXBzIHRvIHNtYWxsLCB3aWUgZXh0ZW5kIHRoZSBwYWdlIHRvIHdpbmRvdyBoZWlnaHQgZm9yIHRoZSBkaWFsb2cKICAgICAgICAgICAgJCgnYm9keScpLmNzcygnbWluLWhlaWdodCcsICQod2luZG93KS5oZWlnaHQoKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBCdWlsZCBEaWFsb2cgSFRNTAogICAgICAgICREaWFsb2cgPSAkKERpYWxvZ0hUTUwpOwoKICAgICAgICAvLyBBZGQgcmVzcG9uc2l2ZSBmdW5jdGlvbmFsaXR5CiAgICAgICAgaWYgKENvcmUuQXBwLlJlc3BvbnNpdmUuSXNTbWFsbGVyT3JFcXVhbChDb3JlLkFwcC5SZXNwb25zaXZlLkdldFNjcmVlblNpemUoKSwgJ1NjcmVlbkwnKSkgewogICAgICAgICAgICBGdWxsc2l6ZU1vZGUgPSB0cnVlOwogICAgICAgICAgICAkRGlhbG9nLmFkZENsYXNzKCdGdWxsc2l6ZScpOwogICAgICAgIH0KCiAgICAgICAgaWYgKFBhcmFtcy5Nb2RhbCkgewogICAgICAgICAgICAkRGlhbG9nLmFkZENsYXNzKCdNb2RhbCcpOwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgUGFyYW0gSFRNTCBpcyBwcm92aWRlZCwgZ2V0IHRoZSBIVE1MIGRhdGEKICAgICAgICAvLyBEYXRhIGNhbiBiZSBhIEhUTUwgc3RyaW5nIG9yIGFuIGpRdWVyeSBvYmplY3Qgd2l0aCBjb250YWluaW5nIEhUTUwgZGF0YQogICAgICAgIGlmIChQYXJhbXMuSFRNTCkgewogICAgICAgICAgICAvLyBJZiB0aGUgZGF0YSBpcyBhIHN0cmluZywgdGhpcyBpcyBjcmVhdGVkIGR5bmFtaWNhbGx5IG9yIHdhcyBkZWxpdmVyZWQgdmlhIEFKQVguCiAgICAgICAgICAgIC8vIEJ1dCBpZiB0aGUgZGF0YSBpcyBhIGpRdWVyeU9iamVjdCwgdGhhdCBtZWFucywgdGhhdCB0aGUgcHJlcGFyZWQgSFRNTCBjb2RlIGZvciB0aGUgZGlhbG9nCiAgICAgICAgICAgIC8vIHdhcyBvcmlnaW5hbGx5IHB1dCBhcyBwYXJ0IG9mIHRoZSB0dCBpbnRvIHRoZSBIVE1MIHBhZ2UKICAgICAgICAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucyAobm8gZG91YmxlIElEcyBldGMuKSB3ZSBoYXZlIHRvIGN1dCBvdXQgdGhlIGRpYWxvZyBIVE1MIGFuZAogICAgICAgICAgICAvLyBvbmx5IHVzZSBpdCBmb3IgdGhlIGRpYWxvZyBpdHNlbGYuCiAgICAgICAgICAgIC8vIEFmdGVyIHRoZSBkaWFsb2cgaXMgY2xvc2VkIGFnYWluIHdlIGhhdmUgdG8gcmV2ZXJ0IHRoaXMgY3V0LW91dCwgYmVjYXVzZSBvdGhlcndpc2Ugd2UKICAgICAgICAgICAgLy8gY291bGQgbm90IG9wZW4gdGhlIGRpYWxvZyBhZ2FpbiAoYmVjYXVzZSB0aGUgSFRNTCB3b3VsZCBiZSBtaXNzaW5nKS4KICAgICAgICAgICAgLy8gQnV0IHdlIGNhbm5vdCB1c2UgdGhlIERpYWxvZyBIVE1MIHRvIHB1dCBpdCBiYWNrIGluIHRoZSBwYWdlLCBiZWNhdXNlIHRoaXMgSFRNTCBjb3VsZCBiZSBjaGFuZ2VkCiAgICAgICAgICAgIC8vIGluIHRoZSBkaWFsb2cuIFNvIHdlIGhhdmUgdG8gc2F2ZSB0aGUgZGF0YSBzb21ld2hlcmUgd2hpY2ggd2FzIGN1dCBvdXQgYW5kIHdyaXRlIGl0IGJhY2sgbGF0ZXIuCiAgICAgICAgICAgIC8vIEJlIGNhcmVmdWw6IFRoZXJlIGNhbiBiZSBtb3JlIHRoYW4gb25lIGRpYWxvZywgd2UgaGF2ZSB0byBzYXZlIHRoZSBkYXRhIGRlcGVuZGVudCBvbiB0aGUgZGlhbG9nCgogICAgICAgICAgICAvLyBHZXQgSFRNTCB3aXRoIEpTIGZ1bmN0aW9uIGlubmVySFRNTCwgYmVjYXVzZSBqUXVlcnkgaHRtbCgpIHN0cmlwcyBvdXQgdGhlIHNjcmlwdCBibG9ja3MKICAgICAgICAgICAgaWYgKHR5cGVvZiBQYXJhbXMuSFRNTCAhPT0gJ3N0cmluZycgJiYgaXNKUXVlcnlPYmplY3QoUGFyYW1zLkhUTUwpKSB7CiAgICAgICAgICAgICAgICAvLyBGaXJzdCBnZXQgdGhlIGRhdGEgc3RydWN0dXJlLCB3aGljaCBpcyAocGVyaGFwcykgYWxyZWFkeSBzYXZlZAogICAgICAgICAgICAgICAgLy8gSWYgdGhlIGRhdGEgZG9lcyBub3QgZXhpc3RzIENvcmUuRGF0YS5HZXQgcmV0dXJucyBhbiBlbXB0eSBoYXNoCiAgICAgICAgICAgICAgICBEaWFsb2dDb3B5ID0gQ29yZS5EYXRhLkdldCgkKCdib2R5JyksICdEaWFsb2dDb3B5Jyk7CiAgICAgICAgICAgICAgICBEaWFsb2dDb3B5U2VsZWN0b3IgPSBDb3JlLkRhdGEuR2V0KCQoJ2JvZHknKSwgJ0RpYWxvZ0NvcHlTZWxlY3RvcicpOwogICAgICAgICAgICAgICAgSFRNTEJhY2t1cCA9IChQYXJhbXMuSFRNTClbMF0uaW5uZXJIVE1MOwogICAgICAgICAgICAgICAgLy8gQWRkIHRoZSBuZXcgSFRNTCBkYXRhIHRvIHRoZSBkYXRhIHN0cnVjdHVyZSBhbmQgc2F2ZSBpdCB0byB0aGUgZG9jdW1lbnQKICAgICAgICAgICAgICAgIERpYWxvZ0NvcHlbRGlhbG9nQ291bnRlcl0gPSBIVE1MQmFja3VwOwogICAgICAgICAgICAgICAgRGlhbG9nQ29weVNlbGVjdG9yW0RpYWxvZ0NvdW50ZXJdID0gUGFyYW1zLkhUTUw7CiAgICAgICAgICAgICAgICBDb3JlLkRhdGEuU2V0KCQoJ2JvZHknKSwgJ0RpYWxvZ0NvcHknLCBEaWFsb2dDb3B5KTsKICAgICAgICAgICAgICAgIENvcmUuRGF0YS5TZXQoJCgnYm9keScpLCAnRGlhbG9nU2VsZWN0b3InLCBEaWFsb2dDb3B5U2VsZWN0b3IpOwogICAgICAgICAgICAgICAgLy8gQWRkaXRpb25hbGx5LCB3ZSBzYXZlIHRoZSBzZWxlY3RvciBhcyBkYXRhIG9uIHRoZSBkaWFsb2cgaXRzZWxmIGZvciBsYXRlciByZXN0b3JpbmcKICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgb3JpZ2luYWwgZGlhbG9nIHRlbXBsYXRlIGNvbnRlbnQgZnJvbSB0aGUgcGFnZQogICAgICAgICAgICAgICAgUGFyYW1zLkhUTUwuZW1wdHkoKTsKICAgICAgICAgICAgICAgIC8vIGFuZCB1c2UgdGhlIHZhcmlhYmxlIGFzIHN0cmluZyAoISEpIHdpdGggdGhlIGNvbnRlbnQgd2hpY2ggd2FzIGN1dCBvdXQKICAgICAgICAgICAgICAgIFBhcmFtcy5IVE1MID0gSFRNTEJhY2t1cDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gVHlwZSAnQWxlcnQnCiAgICAgICAgaWYgKFBhcmFtcy5UeXBlID09PSAnQWxlcnQnKSB7CiAgICAgICAgICAgICREaWFsb2cuYWRkQ2xhc3MoJ0FsZXJ0Jyk7CiAgICAgICAgICAgICREaWFsb2cuYXR0cigicm9sZSIsICJhbGVydGRpYWxvZyIpOwogICAgICAgICAgICAkQ29udGVudCA9ICREaWFsb2cuZmluZCgnLkNvbnRlbnQnKS5hcHBlbmQoJzxkaXYgY2xhc3M9IklubmVyQ29udGVudCI+PC9kaXY+JykuZmluZCgnLklubmVyQ29udGVudCcpOwogICAgICAgICAgICAkQ29udGVudC5hcHBlbmQoJzxpIGNsYXNzPSJmYSBmYS13YXJuaW5nIj48L2k+Jyk7CiAgICAgICAgICAgIGlmIChQYXJhbXMuSGVhZGxpbmUpIHsKICAgICAgICAgICAgICAgICRDb250ZW50LmFwcGVuZCgnPGgyPicgKyBQYXJhbXMuSGVhZGxpbmUgKyAnPC9oMj4nKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoUGFyYW1zLlRleHQpIHsKICAgICAgICAgICAgICAgICRDb250ZW50LmFwcGVuZCgnPHA+JyArIFBhcmFtcy5UZXh0ICsgJzwvcD4nKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBQYXJhbXMuQnV0dG9ucyA9IFt7CiAgICAgICAgICAgICAgICBMYWJlbDogJ09LJywKICAgICAgICAgICAgICAgIFR5cGU6ICdDbG9zZScsCiAgICAgICAgICAgICAgICBGdW5jdGlvbjogUGFyYW1zLk9uQ2xvc2UKICAgICAgICAgICAgfV07CiAgICAgICAgICAgICRDb250ZW50LmFwcGVuZCgnPGRpdiBjbGFzcz0iQ2VudGVyIFNwYWNpbmciPjxidXR0b24gdHlwZT0iYnV0dG9uIiBpZD0iRGlhbG9nQnV0dG9uMSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gQ2xvc2Ugb29vUyI+PHNwYW4+JyArIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCdPSycpICsgJzwvc3Bhbj48L2J1dHRvbj48L2Rpdj4nKTsKICAgICAgICB9CiAgICAgICAgLy8gRGVmaW5lIGRpZmZlcmVudCBvdGhlciB0eXBlcyBoZXJlLi4uCiAgICAgICAgZWxzZSBpZiAoUGFyYW1zLlR5cGUgPT09ICdTZWFyY2gnKSB7CiAgICAgICAgICAgICREaWFsb2cuYWRkQ2xhc3MoJ1NlYXJjaCcpOwogICAgICAgICAgICAkRGlhbG9nLmF0dHIoInJvbGUiLCAiZGlhbG9nIik7CiAgICAgICAgICAgICRDb250ZW50ID0gJERpYWxvZy5maW5kKCcuQ29udGVudCcpOwogICAgICAgICAgICBpZiAoUGFyYW1zLkhUTUwpIHsKICAgICAgICAgICAgICAgICRDb250ZW50LmFwcGVuZChQYXJhbXMuSFRNTCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gSWYgbm8gdHlwZSBpcyBkZWZpbmVkLCBkZWZhdWx0IHR5cGUgaXMgdXNlZAogICAgICAgIGVsc2UgewogICAgICAgICAgICAkRGlhbG9nLmF0dHIoInJvbGUiLCAiZGlhbG9nIik7CiAgICAgICAgICAgICRDb250ZW50ID0gJERpYWxvZy5maW5kKCcuQ29udGVudCcpOwogICAgICAgICAgICAvLyBidXR0b25zIGFyZSBkZWZpbmVkIG9ubHkgaW4gZGVmYXVsdCB0eXBlCiAgICAgICAgICAgIGlmIChQYXJhbXMuQnV0dG9ucykgewogICAgICAgICAgICAgICAgJENvbnRlbnQuYXBwZW5kKCc8ZGl2IGNsYXNzPSJJbm5lckNvbnRlbnQiPjwvZGl2PicpLmZpbmQoJy5Jbm5lckNvbnRlbnQnKS5hcHBlbmQoUGFyYW1zLkhUTUwpOwogICAgICAgICAgICAgICAgJEJ1dHRvbkZvb3RlciA9ICQoJzxkaXYgY2xhc3M9IkNvbnRlbnRGb290ZXIgQ2VudGVyIj48L2Rpdj4nKTsKICAgICAgICAgICAgICAgICQuZWFjaChQYXJhbXMuQnV0dG9ucywgZnVuY3Rpb24gKEluZGV4LCBWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBDbGFzc2VzID0gJ0NhbGxGb3JBY3Rpb24nOwogICAgICAgICAgICAgICAgICAgIGlmIChWYWx1ZS5UeXBlID09PSAnQ2xvc2UnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzZXMgKz0gJyBDbG9zZSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChWYWx1ZS5DbGFzcykgewogICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2VzICs9ICcgJyArIFZhbHVlLkNsYXNzOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkQnV0dG9uRm9vdGVyLmFwcGVuZCgnPGJ1dHRvbiBpZD0iRGlhbG9nQnV0dG9uJyArIChJbmRleCAtIDAgKyAxKSArICciIGNsYXNzPSInICsgQ2xhc3NlcyArICciIHR5cGU9ImJ1dHRvbiI+PHNwYW4+JyArIFZhbHVlLkxhYmVsICsgJzwvc3Bhbj48L2J1dHRvbj4gJyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICRCdXR0b25Gb290ZXIuYXBwZW5kVG8oJENvbnRlbnQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKFBhcmFtcy5IVE1MKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbnRlbnQuYXBwZW5kKFBhcmFtcy5IVE1MKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gSWYgVGl0bGUgaXMgZGVmaW5lZCwgYWRkIGRpYWxvZyB0aXRsZQogICAgICAgIGlmIChQYXJhbXMuVGl0bGUpIHsKICAgICAgICAgICAgaWYgKCBDdXN0b21lckludGVyZmFjZSApIHsKICAgICAgICAgICAgICAgICREaWFsb2cuY2hpbGRyZW4oJ2Rpdi5IZWFkZXInKS5hcHBlbmQoJzxoMj4nICsgUGFyYW1zLlRpdGxlICsgJzwvaDI+Jyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkRGlhbG9nLmNoaWxkcmVuKCdkaXYuSGVhZGVyJykuYXBwZW5kKCc8aDE+JyArIFBhcmFtcy5UaXRsZSArICc8L2gxPicpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBBZGQgRGlhbG9nIHRvIHBhZ2UKICAgICAgICAkRGlhbG9nLmFwcGVuZFRvKCdib2R5Jyk7CgogICAgICAgIC8vIENoZWNrIGlmICJDb250ZW50Rm9vdGVyIiBpcyB1c2VkIGluIENvbnRlbnQKICAgICAgICBpZiAoJERpYWxvZy5maW5kKCcuQ29udGVudCAuQ29udGVudEZvb3RlcicpLmxlbmd0aCkgewogICAgICAgICAgICAvLyBjaGFuZ2UgZGVmYXVsdCBGb290ZXIKICAgICAgICAgICAgJERpYWxvZy5maW5kKCcuRm9vdGVyJykuYWRkQ2xhc3MoJ0NvbnRlbnRGb290ZXInKTsKICAgICAgICB9CgogICAgICAgIC8vIE5vdyBhZGQgdGhlIGRpYWxvZyBudW1iZXIgdG8gdGhlIGRpYWxvZyBkYXRhIHRvIHJlc3RvcmUgdGhlIEhUTUwgbGF0ZXIKICAgICAgICBDb3JlLkRhdGEuU2V0KCREaWFsb2csICdEaWFsb2dDb3VudGVyJywgRGlhbG9nQ291bnRlcik7CiAgICAgICAgLy8gSW5jcmVhc2UgdGhlIGRpYWxvZyBudW1iZXIgZm9yIHRoZSBuZXh0IHBvc3NpYmxlIGRpYWxvZwogICAgICAgIERpYWxvZ0NvdW50ZXIrKzsKCiAgICAgICAgLy8gU2V0IHBvc2l0aW9uIGZvciBEaWFsb2cKICAgICAgICBpZiAoUGFyYW1zLlR5cGUgPT09ICdBbGVydCcpIHsKICAgICAgICAgICAgaWYgKCBDdXN0b21lckludGVyZmFjZSApIHsKICAgICAgICAgICAgICAgICREaWFsb2cuY3NzKHsKICAgICAgICAgICAgICAgICAgICB0b3A6ICQod2luZG93KS5oZWlnaHQoKSAqIDAuMiwKICAgICAgICAgICAgICAgICAgICBsZWZ0OiBNYXRoLnJvdW5kKCgkKHdpbmRvdykud2lkdGgoKSAtICREaWFsb2cud2lkdGgoKSkgLyAyKQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkRGlhbG9nLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgdG9wOiAkKHdpbmRvdykuc2Nyb2xsVG9wKCkgKyAoJCh3aW5kb3cpLmhlaWdodCgpICogMC4zKSwKICAgICAgICAgICAgICAgICAgICBsZWZ0OiBNYXRoLnJvdW5kKCgkKHdpbmRvdykud2lkdGgoKSAtICREaWFsb2cud2lkdGgoKSkgLyAyKQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICh0eXBlb2YgUGFyYW1zLlBvc2l0aW9uVG9wICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAkRGlhbG9nLmNzcygndG9wJywgQ2FsY3VsYXRlRGlhbG9nUG9zaXRpb24oUGFyYW1zLlBvc2l0aW9uVG9wLCAndG9wJykpOwogICAgICAgIH0KICAgICAgICBpZiAodHlwZW9mIFBhcmFtcy5Qb3NpdGlvbkxlZnQgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgIGlmIChQYXJhbXMuUG9zaXRpb25MZWZ0ID09PSAnQ2VudGVyJykgewogICAgICAgICAgICAgICAgJERpYWxvZy5jc3MoJ2xlZnQnLCBNYXRoLnJvdW5kKCgkKHdpbmRvdykud2lkdGgoKSAtICREaWFsb2cud2lkdGgoKSkgLyAyKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkRGlhbG9nLmNzcygnbGVmdCcsIFBhcmFtcy5Qb3NpdGlvbkxlZnQpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICh0eXBlb2YgUGFyYW1zLlBvc2l0aW9uQm90dG9tICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAkRGlhbG9nLmNzcygnYm90dG9tJywgQ2FsY3VsYXRlRGlhbG9nUG9zaXRpb24oUGFyYW1zLlBvc2l0aW9uQm90dG9tLCAnYm90dG9tJykpOwogICAgICAgIH0KICAgICAgICBpZiAodHlwZW9mIFBhcmFtcy5Qb3NpdGlvblJpZ2h0ICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAkRGlhbG9nLmNzcygncmlnaHQnLCBQYXJhbXMuUG9zaXRpb25SaWdodCk7CiAgICAgICAgfQoKICAgICAgICAvLyBDaGVjayB3aW5kb3cgaGVpZ2h0IGFuZCBhZGp1c3QgdGhlIHNjcm9sbGFibGUgaGVpZ2h0IG9mIElubmVyQ29udGVudAogICAgICAgIEFkanVzdFNjcm9sbGFibGVIZWlnaHQoUGFyYW1zLkFsbG93QXV0b0dyb3cpOwoKICAgICAgICAvLyBBZGp1c3QgZGlhbG9nIHBvc2l0aW9uIG9uIG1vYmlsZSBkZXZpY2VzCiAgICAgICAgaWYgKCBGdWxsc2l6ZU1vZGUgJiYgIUN1c3RvbWVySW50ZXJmYWNlICkgewogICAgICAgICAgICAkRGlhbG9nLmNzcygndG9wJywgJCh3aW5kb3cpLnNjcm9sbFRvcCgpKTsKICAgICAgICB9CgogICAgICAgIC8vIEFkZCBldmVudC1oYW5kbGluZywgbm90IGFsbG93ZWQgb24gbW9iaWxlIGRldmljZXMKICAgICAgICBpZiAoICFGdWxsc2l6ZU1vZGUgJiYgIUN1c3RvbWVySW50ZXJmYWNlICkgewogICAgICAgICAgICAkRGlhbG9nLmRyYWdnYWJsZSh7CiAgICAgICAgICAgICAgICBjb250YWlubWVudDogJ2JvZHknLAogICAgICAgICAgICAgICAgaGFuZGxlOiAnLkhlYWRlcicsCiAgICAgICAgICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gRmlyZSBQdWJTdWIgZXZlbnQgZm9yIGRyYWdzdGFydAogICAgICAgICAgICAgICAgICAgIC8vICh0byBoYW5kbGUgbW9yZSBkZXBlbmRlbmNpZXMgaW4gdGhlaXIgb3duIG5hbWVzcGFjZXMpCiAgICAgICAgICAgICAgICAgICAgQ29yZS5BcHAuUHVibGlzaCgnRXZlbnQuVUkuRGlhbG9nLlNob3dEaWFsb2cuRHJhZ1N0YXJ0JywgJERpYWxvZyk7CgogICAgICAgICAgICAgICAgICAgIC8vIEhpZGUgYW55IHBvc3NpYmx5IGV4aXN0aW5nIHRvb2x0aXBzIGFzIHRoZXkgd2lsbCBub3QgYmUgbW92ZWQKICAgICAgICAgICAgICAgICAgICAvLyAgd2l0aCB0aGlzIGRpYWxvZy4KICAgICAgICAgICAgICAgICAgICBpZiAoQ29yZS5Gb3JtICYmIENvcmUuRm9ybS5FcnJvclRvb2x0aXBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuRm9ybS5FcnJvclRvb2x0aXBzLkhpZGVUb29sdGlwKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIENvcmUuQXBwLlB1Ymxpc2goJ0V2ZW50LlVJLkRpYWxvZy5TaG93RGlhbG9nLkRyYWdTdG9wJywgJERpYWxvZyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgLy8gQWRkIGJ1dHRvbiBldmVudHMKICAgICAgICBpZiAoUGFyYW1zLkJ1dHRvbnMpIHsKICAgICAgICAgICAgJC5lYWNoKFBhcmFtcy5CdXR0b25zLCBmdW5jdGlvbiAoSW5kZXgsIFZhbHVlKSB7CiAgICAgICAgICAgICAgICAkKCcjRGlhbG9nQnV0dG9uJyArIChJbmRleCAtIDAgKyAxKSkuY2xpY2soZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChWYWx1ZS5UeXBlID09PSAnU3VibWl0JykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJC5pc0Z1bmN0aW9uKFZhbHVlLkZ1bmN0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFZhbHVlLkZ1bmN0aW9uKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0U3VibWl0RnVuY3Rpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRTdWJtaXRGdW5jdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFZhbHVlLlR5cGUgPT09ICdDbG9zZScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQuaXNGdW5jdGlvbihWYWx1ZS5GdW5jdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChWYWx1ZS5GdW5jdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdENsb3NlRnVuY3Rpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRDbG9zZUZ1bmN0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLmlzRnVuY3Rpb24oVmFsdWUuRnVuY3Rpb24pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZS5GdW5jdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgLy8gQWRkIGV2ZW50LWhhbmRsaW5nIGZvciBDbG9zZS1CdXR0b25zIGFuZCAtTGlua3MKICAgICAgICAkRGlhbG9nLmZpbmQoJy5IZWFkZXIgYS5DbG9zZScpLmNsaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgSGFuZGxlQ2xvc2luZ0FjdGlvbigpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgIC8vIEFkZCBDbG9zZU9uQ2xpY2tPdXRzaWRlIGZ1bmN0aW9uYWxpdHkKICAgICAgICBpZiAoUGFyYW1zLkNsb3NlT25DbGlja091dHNpZGUpIHsKICAgICAgICAgICAgJChkb2N1bWVudCkub2ZmKCdjbGljay5EaWFsb2cnKS5vbignY2xpY2suRGlhbG9nJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgICAgICAgICAvLyBJZiB0YXJnZXQgZWxlbWVudCBpcyByZW1vdmVkIGJlZm9yZSB0aGlzIGV2ZW50IHRyaWdnZXJzLCB0aGUgZW5jbG9zaW5nIGRpdi5EaWFsb2cgY2FuJ3QgYmUgZm91bmQgYW55bW9yZQogICAgICAgICAgICAgICAgLy8gV2UgY2hlY2ssIGlmIHdlIGNhbiBmaW5kIGEgcGFyZW50IEhUTUwgZWxlbWVudCB0byBiZSBzdXJlLCB0aGF0IHRoZSBlbGVtZW50IGlzIG5vdCByZW1vdmVkCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJChldmVudC50YXJnZXQpLnBhcmVudHMoJ2h0bWwnKS5sZW5ndGgKICAgICAgICAgICAgICAgICAgICAmJiAkKGV2ZW50LnRhcmdldCkuY2xvc2VzdCgnZGl2LkRpYWxvZycpLmxlbmd0aCA9PT0gMAoKICAgICAgICAgICAgICAgICAgICAvLyBDYXNlIGF1dG9jb21wbGV0ZSBkcm9wZG93biBpbiBtb2RhbCBkaWFsb2dzCiAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogY3VycmVudGx5IG9ubHkgb2NjdXJzIHdoZW4gdXNpbmcgZHluYW1pYyBmaWVsZCByZWZlcmVuY2Ugc2VhcmNoIGZpZWxkcyBpbiB0aWNrZXQgc2VhcmNoIG9yIGNvbmZpZyBpdGVtIHNlYXJjaAogICAgICAgICAgICAgICAgICAgICYmICEkKGV2ZW50LnRhcmdldCkuaGFzQ2xhc3MoJ3VpLW1lbnUtaXRlbS13cmFwcGVyJykKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgIEhhbmRsZUNsb3NpbmdBY3Rpb24oKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAvLyBBZGQgcmVzaXplIGV2ZW50IGhhbmRsZXIgZm9yIGNhbGN1bGF0aW5nIHRoZSBzY3JvbGwgaGVpZ2h0CiAgICAgICAgJCh3aW5kb3cpLm9mZigncmVzaXplLkRpYWxvZycpLm9uKCdyZXNpemUuRGlhbG9nJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBBZGp1c3RTY3JvbGxhYmxlSGVpZ2h0KFBhcmFtcy5BbGxvd0F1dG9Hcm93KTsKICAgICAgICB9KTsKCiAgICAgICAgQ29yZS5BcHAuU3Vic2NyaWJlKCdFdmVudC5BcHAuUmVzcG9uc2l2ZS5TbWFsbGVyT3JFcXVhbFNjcmVlbkwnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIC8vIERpYWxvZyBzaG91bGQgYmUgZnVsbHNpemUsIGlmIG9uIHNtYWxsZXIgc2NyZWVucwogICAgICAgICAgICAkRGlhbG9nLmFkZENsYXNzKCdGdWxsc2l6ZScpOwogICAgICAgIH0pOwoKICAgICAgICBDb3JlLkFwcC5TdWJzY3JpYmUoJ0V2ZW50LkFwcC5SZXNwb25zaXZlLlNjcmVlblhMJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkRGlhbG9nLnJlbW92ZUNsYXNzKCdGdWxsc2l6ZScpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBJbml0IEtleUV2ZW50LUxvZ2dlcgogICAgICAgIEluaXRLZXlFdmVudChQYXJhbXMuQ2xvc2VPbkVzY2FwZSk7CgogICAgICAgIENvcmUuVUkuSW5wdXRGaWVsZHMuQWN0aXZhdGUoJERpYWxvZyk7CgogICAgICAgIC8vIEZvY3VzIGZpcnN0IGZvY3VzYWJsZSBlbGVtZW50CiAgICAgICAgRm9jdXNGaXJzdEVsZW1lbnQoKTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBTaG93Q29udGVudERpYWxvZwogICAgICogQG1lbWJlcm9mIENvcmUuVUkuRGlhbG9nCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBIVE1MIC0gVGhlIGNvbnRlbnQgSFRNTCB3aGljaCBzaG91bGQgYmUgc2hvd24uCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gVGl0bGUgLSBUaGUgdGl0bGUgb2YgdGhlIGRpYWxvZy4KICAgICAqIEBwYXJhbSB7TnVtYmVyfFN0cmluZ30gUG9zaXRpb25Ub3AgLSBUaGUgdG9wIHBvc2l0aW9uIHRoZSBkaWFsb2cgaXMgcG9zaXRpb25lZCBpbml0aWFsbHkuCiAgICAgKiBAcGFyYW0ge051bWVyfFN0cmluZ30gUG9zaXRpb25MZWZ0IC0gVGhlIGxlZnQgcG9zaXRpb24gdGhlIGRpYWxvZyBpcyBwb3NpdGlvbmVkIGluaXRpYWxseS4KICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gTW9kYWwgLSBJZiBkZWZpbmVkIGFuZCBzZXQgdG8gdHJ1ZSwgYW4gb3ZlcmxheSBpcyBzaG93biBmb3IgYSBtb2RhbCBkaWFsb2cuCiAgICAgKiBAcGFyYW0ge0FycmF5fSBCdXR0b25zIC0gVGhlIGJ1dHRvbiBhcnJheS4KICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gQWxsb3dBdXRvR3JvdyAtIElmIHRydWUsIHRoZSBJbm5lckNvbnRlbnQgb2YgdGhlIGRpYWxvZyBjYW4gcmVzaXplIHVudGlsIHRoZSBtYXggd2luZG93IGhlaWdodCBpcyByZWFjaGVkLCBpZiBmYWxzZSAoZGVmYXVsdCksIElubmVyQ29udGVudCBvZiBzbWFsbCBkaWFsb2dzIGRvZXMgbm90IHJlc2l6ZSBvdmVyIDIwMHB4LgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFNob3dzIGEgZGVmYXVsdCBkaWFsb2cuCiAgICAgKi8KICAgIFRhcmdldE5TLlNob3dDb250ZW50RGlhbG9nID0gZnVuY3Rpb24gKEhUTUwsIFRpdGxlLCBQb3NpdGlvblRvcCwgUG9zaXRpb25MZWZ0LCBNb2RhbCwgQnV0dG9ucywgQWxsb3dBdXRvR3JvdykgewogICAgICAgIFRhcmdldE5TLlNob3dEaWFsb2coewogICAgICAgICAgICBIVE1MOiBIVE1MLAogICAgICAgICAgICBUaXRsZTogVGl0bGUsCiAgICAgICAgICAgIE1vZGFsOiBNb2RhbCwKICAgICAgICAgICAgQ2xvc2VPbkNsaWNrT3V0c2lkZTogdHJ1ZSwKICAgICAgICAgICAgQ2xvc2VPbkVzY2FwZTogdHJ1ZSwKICAgICAgICAgICAgUG9zaXRpb25Ub3A6IFBvc2l0aW9uVG9wLAogICAgICAgICAgICBQb3NpdGlvbkxlZnQ6IFBvc2l0aW9uTGVmdCwKICAgICAgICAgICAgQnV0dG9uczogQnV0dG9ucywKICAgICAgICAgICAgQWxsb3dBdXRvR3JvdzogQWxsb3dBdXRvR3JvdwogICAgICAgIH0pOwogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIFNob3dXYWl0aW5nRGlhbG9nCiAgICAgKiBAbWVtYmVyb2YgQ29yZS5VSS5EaWFsb2cKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtTdHJpbmd9IFRpdGxlIC0gVGhlIHRpdGxlIG9mIHRoZSBkaWFsb2cuCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gVGV4dCAtIFRoZSB0ZXh0IG9mIHRoZSBkaWFsb2cuCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgU2hvd3MgYSB3YWl0aW5nIGRpYWxvZyAod2l0aCBzcGlubmVyIGljb24pIGFuZCBjdXN0b21pemFibGUgdGl0bGUgYW5kIHRleHQKICAgICAqLwogICAgVGFyZ2V0TlMuU2hvd1dhaXRpbmdEaWFsb2cgPSBmdW5jdGlvbiAoVGl0bGUsIFRleHQpIHsKCiAgICAgICAgdmFyIERpYWxvZ1RlbXBsYXRlID0gQ29yZS5UZW1wbGF0ZS5SZW5kZXIoJ0RpYWxvZy9XYWl0aW5nJywgewogICAgICAgICAgICBUZXh0OiBUZXh0CiAgICAgICAgfSk7CgogICAgICAgIFRhcmdldE5TLlNob3dEaWFsb2coewogICAgICAgICAgICBIVE1MOiBEaWFsb2dUZW1wbGF0ZSwKICAgICAgICAgICAgVGl0bGU6IFRpdGxlLAogICAgICAgICAgICBNb2RhbDogdHJ1ZSwKICAgICAgICAgICAgQ2xvc2VPbkNsaWNrT3V0c2lkZTogZmFsc2UsCiAgICAgICAgICAgIENsb3NlT25Fc2NhcGU6IGZhbHNlLAogICAgICAgICAgICBQb3NpdGlvblRvcDogJzIwJScsCiAgICAgICAgICAgIFBvc2l0aW9uTGVmdDogJ0NlbnRlcicsCiAgICAgICAgICAgIEFsbG93QXV0b0dyb3c6IHRydWUsCiAgICAgICAgICAgIEhpZGVIZWFkZXI6IHRydWUsCiAgICAgICAgICAgIEhpZGVGb290ZXI6IHRydWUKICAgICAgICB9KTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBNYWtlRGlhbG9nV2FpdAogICAgICogQG1lbWJlcm9mIENvcmUuVUkuRGlhbG9nCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBTaG93cyBhIHNwaW5uZXIgb3ZlcmxheSBvbiB0aGUgY3VycmVudGx5IHZpc2libGUgbW9kYWwgZGlhbG9nLiBJcyBtZWFudCBmb3Igc2hvd2luZyB0aGUgdXNlciB0aGF0IHNvbWV0aGluZyBpcyBhYm91dAogICAgICogICAgICB0byBoYXBwZW4sIGUuZy4gaWYgY2hhbmdpbmcgYSBmaWVsZCB3aXRoaW4gYSBkaWFsb2cgY2F1c2VzIGEgcGFnZSByZWxvYWQuCiAgICAgKi8KICAgIFRhcmdldE5TLk1ha2VEaWFsb2dXYWl0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICQoJy5EaWFsb2c6dmlzaWJsZSAuSW5uZXJDb250ZW50JykucHJlcGVuZCgnPGRpdiBjbGFzcz0iV2FpdGluZyI+PGkgY2xhc3M9ImZhIGZhLXNwaW5uZXIgZmEtc3BpbiI+PC9pPjwvZGl2PicpLmZpbmQoJy5XYWl0aW5nJykuZmFkZUluKCk7CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgU2hvd0FsZXJ0CiAgICAgKiBAbWVtYmVyb2YgQ29yZS5VSS5EaWFsb2cKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtTdHJpbmd9IEhlYWRsaW5lIC0gVGhlIGJvbGQgaGVhZGxpbmUgdGV4dC4KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBUZXh0IC0gVGhlIGRlc2NyaXB0aW9uLgogICAgICogQHBhcmFtIHtGdW5jdGlvbn0gQ2xvc2VGdW5jdGlvbiAtIFRoZSBzcGVjaWFsIGZ1bmN0aW9uIHdoaWNoIGlzIHN0YXJ0ZWQgb24gY2xvc2luZyB0aGUgZGlhbG9nCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbmFsLCBpZiB1c2VkIGFsc28gdGhlIHJlbW92aW5nIG9mIHRoZSBkaWFsb2cgaXRzZWxmIG11c3QgYmUgaGFuZGxlZCkuCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgU2hvd3MgYW4gYWxlcnQgZGlhbG9nLgogICAgICovCiAgICBUYXJnZXROUy5TaG93QWxlcnQgPSBmdW5jdGlvbiAoSGVhZGxpbmUsIFRleHQsIENsb3NlRnVuY3Rpb24pIHsKICAgICAgICBUYXJnZXROUy5TaG93RGlhbG9nKHsKICAgICAgICAgICAgVHlwZTogJ0FsZXJ0JywKICAgICAgICAgICAgTW9kYWw6IHRydWUsCiAgICAgICAgICAgIFRpdGxlOiBIZWFkbGluZSwKICAgICAgICAgICAgVGV4dDogVGV4dCwKICAgICAgICAgICAgT25DbG9zZTogQ2xvc2VGdW5jdGlvbgogICAgICAgIH0pOwogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIENsb3NlRGlhbG9nCiAgICAgKiBAbWVtYmVyb2YgQ29yZS5VSS5EaWFsb2cKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9IE9iamVjdCAtIFRoZSBqUXVlcnkgb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgZGlhbG9nIG9yIGFueSBjaGlsZCBlbGVtZW50IG9mIGl0LCB3aGljaCBzaG91bGQgYmUgY2xvc2VkLgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIENsb3NlcyBhbGwgZGlhbG9ncyBzcGVjaWZpZWQuCiAgICAgKi8KICAgIFRhcmdldE5TLkNsb3NlRGlhbG9nID0gZnVuY3Rpb24gKE9iamVjdCkgewogICAgICAgIHZhciAkRGlhbG9nLCAkRGlhbG9nU2VsZWN0b3IsIERpYWxvZ0NvcHksIERpYWxvZ1NlbGVjdG9yRGF0YSwgSW50ZXJuYWxEaWFsb2dDb3VudGVyLCBCYWNrdXBIVE1MOwogICAgICAgICREaWFsb2cgPSAkKE9iamVjdCkuY2xvc2VzdCgnLkRpYWxvZzp2aXNpYmxlJyk7CgogICAgICAgIC8vIEdldCB0aGUgb3JpZ2luYWwgZGlhbG9nIG51bWJlciBmb3IgdGhlIGNvbnRlbnQgdGVtcGxhdGUKICAgICAgICBJbnRlcm5hbERpYWxvZ0NvdW50ZXIgPSBDb3JlLkRhdGEuR2V0KCREaWFsb2csICdEaWFsb2dDb3VudGVyJyk7CgogICAgICAgIC8vIHB1Ymxpc2ggY2xvc2UgZXZlbnQKICAgICAgICBDb3JlLkFwcC5QdWJsaXNoKCdFdmVudC5VSS5EaWFsb2cuQ2xvc2VEaWFsb2cuQ2xvc2UnLCBbJERpYWxvZ10pOwoKLy8gUm90aGVyIE9TUyAvIFNlcnZpY2VDYXRhbG9nCi8vICAgICAgICAgJERpYWxvZy5yZW1vdmUoKTsKLy8gICAgICAgICAkKCcjT3ZlcmxheScpLnJlbW92ZSgpOwovLyAgICAgICAgICQoJ2JvZHknKS5jc3MoewovLyAgICAgICAgICAgICAnb3ZlcmZsb3cnOiAnYXV0bycKLy8gICAgICAgICB9KTsKLy8gICAgICAgICAkKGRvY3VtZW50KS51bmJpbmQoJ2tleWRvd24uRGlhbG9nJykudW5iaW5kKCdrZXlwcmVzcy5EaWFsb2cnKS51bmJpbmQoJ2NsaWNrLkRpYWxvZycpOwovLyAgICAgICAgICQod2luZG93KS51bmJpbmQoJ3Jlc2l6ZS5EaWFsb2cnKTsKLy8gICAgICAgICAkKCdib2R5JykuY3NzKCdtaW4taGVpZ2h0JywgJ2F1dG8nKTsKLy8KLy8gICAgICAgICAvLyBSZXZlcnQgb3JpZ25hbCBodG1sCi8vICAgICAgICAgaWYgKEludGVybmFsRGlhbG9nQ291bnRlcikgewovLyAgICAgICAgICAgICBEaWFsb2dDb3B5ID0gQ29yZS5EYXRhLkdldCgkKCdib2R5JyksICdEaWFsb2dDb3B5Jyk7Ci8vICAgICAgICAgICAgIERpYWxvZ1NlbGVjdG9yRGF0YSA9IENvcmUuRGF0YS5HZXQoJCgnYm9keScpLCAnRGlhbG9nU2VsZWN0b3InKTsKLy8gICAgICAgICAgICAgLy8gR2V0IHNhdmVkIEhUTUwKLy8gICAgICAgICAgICAgaWYgKHR5cGVvZiBEaWFsb2dDb3B5ICE9PSAndW5kZWZpbmVkJykgewovLyAgICAgICAgICAgICAgICAgQmFja3VwSFRNTCA9IERpYWxvZ0NvcHlbSW50ZXJuYWxEaWFsb2dDb3VudGVyXTsKLy8gICAgICAgICAgICAgICAgICREaWFsb2dTZWxlY3RvciA9IERpYWxvZ1NlbGVjdG9yRGF0YVtJbnRlcm5hbERpYWxvZ0NvdW50ZXJdOwovLwovLyAgICAgICAgICAgICAgICAgLy8gSWYgSFRNTCBjb3VsZCBiZSByZXN0b3JlZCwgd3JpdGUgaXQgYmFjayBpbnRvIHRoZSBwYWdlCi8vICAgICAgICAgICAgICAgICBpZiAoQmFja3VwSFRNTCAmJiBCYWNrdXBIVE1MLmxlbmd0aCkgewovLyAgICAgICAgICAgICAgICAgICAgICREaWFsb2dTZWxlY3Rvci5hcHBlbmQoQmFja3VwSFRNTCk7Ci8vICAgICAgICAgICAgICAgICB9Ci8vCi8vICAgICAgICAgICAgICAgICAvLyBkZWxldGUgdGhpcyB2YXJpYWJsZSBmcm9tIHRoZSBvYmplY3QKLy8gICAgICAgICAgICAgICAgIGRlbGV0ZSBEaWFsb2dDb3B5W0ludGVybmFsRGlhbG9nQ291bnRlcl07Ci8vICAgICAgICAgICAgICAgICBkZWxldGUgRGlhbG9nU2VsZWN0b3JEYXRhW0ludGVybmFsRGlhbG9nQ291bnRlcl07Ci8vICAgICAgICAgICAgIH0KLy8KLy8gICAgICAgICAgICAgLy8gd3JpdGUgdGhlIG5ldyBEaWFsb2dDb3B5IGJhY2sKLy8gICAgICAgICAgICAgQ29yZS5EYXRhLlNldCgkKCdib2R5JyksICdEaWFsb2dDb3B5JywgRGlhbG9nQ29weSk7Ci8vICAgICAgICAgfQogICAgICAgIGlmICgkRGlhbG9nLmxlbmd0aCA+IDEgJiYgJERpYWxvZ1skRGlhbG9nLmxlbmd0aCAtIDFdLmRhdGFzZXQuc3RhY2tlZCkgewogICAgICAgICAgICAkKCREaWFsb2dbJERpYWxvZy5sZW5ndGggLSAxXSkucmVtb3ZlKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJERpYWxvZy5yZW1vdmUoKTsKICAgICAgICAgICAgJCgnI092ZXJsYXknKS5yZW1vdmUoKTsKICAgICAgICAgICAgJCgnYm9keScpLmNzcyh7CiAgICAgICAgICAgICAgICAnb3ZlcmZsb3cnOiAnYXV0bycKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICQoZG9jdW1lbnQpLnVuYmluZCgna2V5ZG93bi5EaWFsb2cnKS51bmJpbmQoJ2tleXByZXNzLkRpYWxvZycpLnVuYmluZCgnY2xpY2suRGlhbG9nJyk7CiAgICAgICAgICAgICQod2luZG93KS51bmJpbmQoJ3Jlc2l6ZS5EaWFsb2cnKTsKICAgICAgICAgICAgJCgnYm9keScpLmNzcygnbWluLWhlaWdodCcsICdhdXRvJyk7CgogICAgICAgICAgICAvLyBSZXZlcnQgb3JpZ25hbCBodG1sCiAgICAgICAgICAgIGlmIChJbnRlcm5hbERpYWxvZ0NvdW50ZXIpIHsKICAgICAgICAgICAgICAgIERpYWxvZ0NvcHkgPSBDb3JlLkRhdGEuR2V0KCQoJ2JvZHknKSwgJ0RpYWxvZ0NvcHknKTsKICAgICAgICAgICAgICAgIERpYWxvZ1NlbGVjdG9yRGF0YSA9IENvcmUuRGF0YS5HZXQoJCgnYm9keScpLCAnRGlhbG9nU2VsZWN0b3InKTsKICAgICAgICAgICAgICAgIC8vIEdldCBzYXZlZCBIVE1MCiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIERpYWxvZ0NvcHkgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAgICAgQmFja3VwSFRNTCA9IERpYWxvZ0NvcHlbSW50ZXJuYWxEaWFsb2dDb3VudGVyXTsKICAgICAgICAgICAgICAgICAgICAkRGlhbG9nU2VsZWN0b3IgPSBEaWFsb2dTZWxlY3RvckRhdGFbSW50ZXJuYWxEaWFsb2dDb3VudGVyXTsKCiAgICAgICAgICAgICAgICAgICAgLy8gSWYgSFRNTCBjb3VsZCBiZSByZXN0b3JlZCwgd3JpdGUgaXQgYmFjayBpbnRvIHRoZSBwYWdlCiAgICAgICAgICAgICAgICAgICAgaWYgKEJhY2t1cEhUTUwgJiYgQmFja3VwSFRNTC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJERpYWxvZ1NlbGVjdG9yLmFwcGVuZChCYWNrdXBIVE1MKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vIGRlbGV0ZSB0aGlzIHZhcmlhYmxlIGZyb20gdGhlIG9iamVjdAogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBEaWFsb2dDb3B5W0ludGVybmFsRGlhbG9nQ291bnRlcl07CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIERpYWxvZ1NlbGVjdG9yRGF0YVtJbnRlcm5hbERpYWxvZ0NvdW50ZXJdOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIHdyaXRlIHRoZSBuZXcgRGlhbG9nQ29weSBiYWNrCiAgICAgICAgICAgICAgICBDb3JlLkRhdGEuU2V0KCQoJ2JvZHknKSwgJ0RpYWxvZ0NvcHknLCBEaWFsb2dDb3B5KTsKICAgICAgICAgICAgfQogICAgICAgIH0KLy8gRU8gU2VydmljZUNhdGFsb2cKICAgIH07CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KENvcmUuVUkuRGlhbG9nIHx8IHt9KSk7Cg==</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">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vICRvcmlnaW46IG90b2JvIC0gNmVmZGM3YmYyYTMzMjUyNzdjZDc5YTYwZjBmMjQwN2Y4YWQ1OWU4NyAtIHZhci9odHRwZC9odGRvY3MvanMvQ29yZS5BZ2VudC5BZG1pbi5TZXJ2aWNlLmpzCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgQ29yZSA9IENvcmUgfHwge307CkNvcmUuQWdlbnQgPSBDb3JlLkFnZW50IHx8IHt9OwpDb3JlLkFnZW50LkFkbWluID0gQ29yZS5BZ2VudC5BZG1pbiB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlIENvcmUuQWdlbnQuQWRtaW4uU2VydmljZQogKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5BZG1pbgogKiBAYXV0aG9yCiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIGZ1bmN0aW9uIGZvciBBZG1pblNlcnZpY2UgbW9kdWxlLgogKi8KIENvcmUuQWdlbnQuQWRtaW4uU2VydmljZSA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKgogICAgKiBAbmFtZSBJbml0CiAgICAqIEBtZW1iZXJvZiBDb3JlLkFnZW50LkFkbWluLlNlcnZpY2UKICAgICogQGZ1bmN0aW9uCiAgICAqIEBkZXNjcmlwdGlvbgogICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGFibGUgZmlsdGVyLgogICAgKi8KICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgQ29yZS5VSS5UYWJsZS5Jbml0VGFibGVGaWx0ZXIoJCgnI0ZpbHRlclNlcnZpY2VzJyksICQoJyNTZXJ2aWNlcycpKTsKCiAgICAgICAgLy8gaW5pdCBjaGVja2JveCB0byBpbmNsdWRlIGludmFsaWQgZWxlbWVudHMKICAgICAgICAkKCdpbnB1dCNJbmNsdWRlSW52YWxpZCcpLm9mZignY2hhbmdlJykub24oJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIFVSTCA9IENvcmUuQ29uZmlnLkdldCgiQmFzZWxpbmsiKSArICdBY3Rpb249JyArIENvcmUuQ29uZmlnLkdldCgiQWN0aW9uIikgKyAnO0luY2x1ZGVJbnZhbGlkPScgKyAoICQodGhpcykuaXMoJzpjaGVja2VkJykgPyAxIDogMCApOwogICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFVSTDsKICAgICAgICB9KTsKCi8vIFNlcnZpY2UgQ2F0YWxvZwogICAgICAgIC8vIGJpbmQgY2xpY2sgZnVuY3Rpb24gdG8gYWRkIGJ1dHRvbgogICAgICAgICQoJy5MYW5ndWFnZUFkZCcpLm9mZignY2hhbmdlLlNlcnZpY2UnKS5vbignY2hhbmdlLlNlcnZpY2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIFRhcmdldE5TLkFkZExhbmd1YWdlKCQodGhpcykudmFsKCksICQoJy5MYW5ndWFnZUFkZCBvcHRpb246c2VsZWN0ZWQnKS50ZXh0KCkpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgIC8vIGJpbmQgY2xpY2sgZnVuY3Rpb24gdG8gcmVtb3ZlIGJ1dHRvbgogICAgICAgICQoJy5MYW5ndWFnZVJlbW92ZScpLm9mZignY2xpY2suU2VydmljZScpLm9uKCdjbGljay5TZXJ2aWNlJywgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgaWYgKHdpbmRvdy5jb25maXJtKENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgc2VydmljZSBkZXNjcmlwdGlvbiBsYW5ndWFnZT8nKSkpIHsKICAgICAgICAgICAgICAgIFRhcmdldE5TLlJlbW92ZUxhbmd1YWdlKCQodGhpcykpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKLy8gRU8gU2VydmljZSBDYXRhbG9nCiAgICB9OwoKCi8vIFNlcnZpY2UgQ2F0YWxvZwogICAvKioKICAgICAqIEBuYW1lIEFkZExhbmd1YWdlCiAgICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5BZG1pbi5TZXJ2aWNlCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBMYW5ndWFnZUlEIC0gc2hvcnQgbmFtZSBvZiB0aGUgbGFuZ3VhZ2UgbGlrZSBlc19NWC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBMYW5ndWFnZSAtIGZ1bGwgbmFtZSBvZiB0aGUgbGFuZ3VhZ2UgbGlrZSBTcGFuaXNoIChNZXhpY28pLgogICAgICogQHJldHVybnMge0Jvb2x9IFJldHVybnMgZmFsc2UgdG8gcHJldmVudCBldmVudCBidWJibGluZy4KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGFkZCBhIG5ldyBzZXJ2aWNlIGRlc2NyaXB0aW9uIGxhbmd1YWdlLgogICAgICovCiAgIFRhcmdldE5TLkFkZExhbmd1YWdlID0gZnVuY3Rpb24oTGFuZ3VhZ2VJRCwgTGFuZ3VhZ2UpewoKICAgICAgICB2YXIgJENsb25lID0gJCgnLlRlbXBsYXRlJykuY2xvbmUoKTsKCiAgICAgICAgaWYgKExhbmd1YWdlID09PSAnLScpewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAvLyByZW1vdmUgdW5uZWNlc3NhcnkgY2xhc3NlcwogICAgICAgICRDbG9uZS5yZW1vdmVDbGFzcygnSGlkZGVuIFRlbXBsYXRlJyk7CgogICAgICAgIC8vIGFkZCB0aXRsZQogICAgICAgICRDbG9uZS5maW5kKCcuVGl0bGUnKS5odG1sKExhbmd1YWdlKTsKCiAgICAgICAgLy8gdXBkYXRlIHJlbW92ZSBsaW5rCiAgICAgICAgJENsb25lLmZpbmQoJyNUZW1wbGF0ZV9MYW5ndWFnZV9SZW1vdmUnKS5hdHRyKCduYW1lJywgTGFuZ3VhZ2VJRCArICdfTGFuZ3VhZ2VfUmVtb3ZlJyk7CiAgICAgICAgJENsb25lLmZpbmQoJyNUZW1wbGF0ZV9MYW5ndWFnZV9SZW1vdmUnKS5hdHRyKCdpZCcsIExhbmd1YWdlSUQgKyAnX0xhbmd1YWdlX1JlbW92ZScpOwoKICAgICAgICAvLyBzZXQgaGlkZGVuIGxhbmd1YWdlIGZpZWxkCiAgICAgICAgJENsb25lLmZpbmQoJy5MYW5ndWFnZUlEJykuYXR0cignbmFtZScsICdMYW5ndWFnZUlEJyk7CiAgICAgICAgJENsb25lLmZpbmQoJy5MYW5ndWFnZUlEJykudmFsKExhbmd1YWdlSUQpOwoKICAgICAgICAvLyB1cGRhdGUgc3ViamVjdCBsYWJlbAogICAgICAgICRDbG9uZS5maW5kKCcjVGVtcGxhdGVfTGFiZWxfRGVzY3JpcHRpb25TaG9ydCcpLmF0dHIoJ2ZvcicsIExhbmd1YWdlSUQgKyAnX0Rlc2NyaXB0aW9uU2hvcnQnKTsKICAgICAgICAkQ2xvbmUuZmluZCgnI1RlbXBsYXRlX0xhYmVsX0Rlc2NyaXB0aW9uU2hvcnQnKS5hdHRyKCdpZCcsIExhbmd1YWdlSUQgKyAnX0xhYmVsX0Rlc2NyaXB0aW9uU2hvcnQnKTsKCiAgICAgICAgLy8gdXBkYXRlIHN1YmplY3QgZmllbGQKICAgICAgICAkQ2xvbmUuZmluZCgnI1RlbXBsYXRlX0Rlc2NyaXB0aW9uU2hvcnQnKS5hdHRyKCduYW1lJywgTGFuZ3VhZ2VJRCArICdfRGVzY3JpcHRpb25TaG9ydCcpOwogICAgICAgICRDbG9uZS5maW5kKCcjVGVtcGxhdGVfRGVzY3JpcHRpb25TaG9ydCcpLmFkZENsYXNzKCdWYWxpZGF0ZV9SZXF1aXJlZCcpOwogICAgICAgICRDbG9uZS5maW5kKCcjVGVtcGxhdGVfRGVzY3JpcHRpb25TaG9ydCcpLmF0dHIoJ2lkJywgTGFuZ3VhZ2VJRCArICdfRGVzY3JpcHRpb25TaG9ydCcpOwogICAgICAgICRDbG9uZS5maW5kKCcjVGVtcGxhdGVfRGVzY3JpcHRpb25TaG9ydEVycm9yJykuYXR0cignaWQnLCBMYW5ndWFnZUlEICsgJ19EZXNjcmlwdGlvblNob3J0RXJyb3InKTsKCiAgICAgICAgLy8gdXBkYXRlIGJvZHkgbGFiZWwKICAgICAgICAkQ2xvbmUuZmluZCgnI1RlbXBsYXRlX0xhYmVsX0Rlc2NyaXB0aW9uTG9uZycpLmF0dHIoJ2ZvcicsIExhbmd1YWdlSUQgKyAnX0Rlc2NyaXB0aW9uTG9uZycpOwogICAgICAgICRDbG9uZS5maW5kKCcjVGVtcGxhdGVfTGFiZWxfRGVzY3JpcHRpb25Mb25nJykuYXR0cignaWQnLCBMYW5ndWFnZUlEICsgJ19MYWJlbF9EZXNjcmlwdGlvbkxvbmcnKTsKCiAgICAgICAgLy8gdXBkYXRlIGJvZHkgZmllbGQKICAgICAgICAkQ2xvbmUuZmluZCgnI1RlbXBsYXRlX0Rlc2NyaXB0aW9uTG9uZycpLmF0dHIoJ25hbWUnLCBMYW5ndWFnZUlEICsgJ19EZXNjcmlwdGlvbkxvbmcnKTsKICAgICAgICAkQ2xvbmUuZmluZCgnI1RlbXBsYXRlX0Rlc2NyaXB0aW9uTG9uZycpLmFkZENsYXNzKCdSaWNoVGV4dCcpOwogICAgICAgICRDbG9uZS5maW5kKCcjVGVtcGxhdGVfRGVzY3JpcHRpb25Mb25nJykuYXR0cignaWQnLCBMYW5ndWFnZUlEICsgJ19EZXNjcmlwdGlvbkxvbmcnKTsKCiAgICAgICAgLy8gYXBwZW5kIHRvIGNvbnRhaW5lcgogICAgICAgICQoJy5TZXJ2aWNlTGFuZ3VhZ2VDb250YWluZXInKS5hcHBlbmQoJENsb25lKTsKCiAgICAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgcmljaCB0ZXh0IGVkaXRvciBpZiBzZXQKICAgICAgICBpZiAocGFyc2VJbnQoQ29yZS5Db25maWcuR2V0KCdSaWNoVGV4dFNldCcpLCAxMCkgPT09IDEpIHsKICAgICAgICAgICAgQ29yZS5VSS5SaWNoVGV4dEVkaXRvci5Jbml0QWxsRWRpdG9ycygpOwogICAgICAgIH0KCiAgICAgICAgLy8gYmluZCBjbGljayBmdW5jdGlvbiB0byByZW1vdmUgYnV0dG9uCiAgICAgICAgJCgnLkxhbmd1YWdlUmVtb3ZlJykub2ZmKCdjbGljay5TZXJ2aWNlJykub24oJ2NsaWNrLlNlcnZpY2UnLCBmdW5jdGlvbiAoKSB7CgogICAgICAgICAgICBpZiAod2luZG93LmNvbmZpcm0oQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBzZXJ2aWNlIGRlc2NyaXB0aW9uIGxhbmd1YWdlPycpKSkgewogICAgICAgICAgICAgICAgVGFyZ2V0TlMuUmVtb3ZlTGFuZ3VhZ2UoJCh0aGlzKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICBUYXJnZXROUy5MYW5ndWFnZVNlbGVjdGlvblJlYnVpbGQoKTsKCiAgICAgICAgQ29yZS5VSS5Jbml0V2lkZ2V0QWN0aW9uVG9nZ2xlKCk7CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBSZW1vdmVMYW5ndWFnZQogICAgICogQG1lbWJlcm9mIENvcmUuQWdlbnQuQWRtaW4uU2VydmljZQogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gT2JqZWN0IC0gSlF1ZXJ5IG9iamVjdCB1c2VkIHRvIHJlbW92ZSB0aGUgbGFuZ3VhZ2UgYmxvY2sKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgYSBzZXJ2aWNlIGRlc2NyaXB0aW9uIGxhbmd1YWdlLgogICAgICovCiAgICBUYXJnZXROUy5SZW1vdmVMYW5ndWFnZSA9IGZ1bmN0aW9uIChPYmplY3QpIHsKICAgICAgICBPYmplY3QuY2xvc2VzdCgnLlNlcnZpY2VMYW5ndWFnZScpLnJlbW92ZSgpOwogICAgICAgIFRhcmdldE5TLkxhbmd1YWdlU2VsZWN0aW9uUmVidWlsZCgpOwogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIExhbmd1YWdlU2VsZWN0aW9uUmVidWlsZAogICAgICogQG1lbWJlcm9mIENvcmUuQWdlbnQuQWRtaW4uU2VydmljZQogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gUmV0dXJucyB0cnVlLgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gcmVidWlsZHMgbGFuZ3VhZ2Ugc2VsZWN0aW9uLCBvbmx5IHNob3cgYXZhaWxhYmxlIGxhbmd1YWdlcy4KICAgICAqLwogICAgVGFyZ2V0TlMuTGFuZ3VhZ2VTZWxlY3Rpb25SZWJ1aWxkID0gZnVuY3Rpb24gKCkgewoKICAgICAgICAvLyBnZXQgb3JpZ2luYWwgc2VsZWN0aW9uIHdpdGggYWxsIHBvc3NpYmxlIGZpZWxkcyBhbmQgY2xvbmUgaXQKICAgICAgICB2YXIgJExhbmd1YWdlcyA9ICQoJyNMYW5ndWFnZU9yaWcgb3B0aW9uJykuY2xvbmUoKTsKCiAgICAgICAgJCgnI0xhbmd1YWdlJykuZW1wdHkoKTsKCiAgICAgICAgLy8gc3RyaXAgYWxsIGFscmVhZHkgdXNlZCBhdHRyaWJ1dGVzCiAgICAgICAgJExhbmd1YWdlcy5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKCEkKCcuU2VydmljZUxhbmd1YWdlQ29udGFpbmVyIGxhYmVsIycgKyAkKHRoaXMpLnZhbCgpICsgJ19MYWJlbF9EZXNjcmlwdGlvblNob3J0JykubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAkKCcjTGFuZ3VhZ2UnKS5hcHBlbmQoJCh0aGlzKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgJCgnI0xhbmd1YWdlJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKTsKCiAgICAgICAgLy8gYmluZCBjbGljayBmdW5jdGlvbiB0byBhZGQgYnV0dG9uCiAgICAgICAgJCgnLkxhbmd1YWdlQWRkJykub2ZmKCdjaGFuZ2UuU2VydmljZScpLm9uKCdjaGFuZ2UuU2VydmljZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgVGFyZ2V0TlMuQWRkTGFuZ3VhZ2UoJCh0aGlzKS52YWwoKSwgJCgnLkxhbmd1YWdlQWRkIG9wdGlvbjpzZWxlY3RlZCcpLnRleHQoKSk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9OwovLyBFTyBTZXJ2aWNlIENhdGFsb2cKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KENvcmUuQWdlbnQuQWRtaW4uU2VydmljZSB8fCB7fSkpOwo=</File>
        <File Location="var/httpd/htdocs/js/Core.Agent.Admin.ServiceImportExport.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBabnVueSBHbWJILCBodHRwOi8vem51bnkuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vICRvcmlnaW46IG90b2JvIC0gZWEyMTE5MDIxMzBjYTViNzk2ZDk2Njg0NTk3MGNmYzU0NjQ0NDU0OCAtIHZhci9odHRwZC9odGRvY3MvanMvQ29yZS5BZ2VudC5BZG1pbi5TZXJ2aWNlSW1wb3J0RXhwb3J0LmpzCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgQ29yZSAgICAgICAgID0gQ29yZSAgICAgICAgICAgICB8fCB7fTsKQ29yZS5BZ2VudCAgICAgICA9IENvcmUuQWdlbnQgICAgICAgfHwge307CkNvcmUuQWdlbnQuQWRtaW4gPSBDb3JlLkFnZW50LkFkbWluIHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgQ29yZS5BZ2VudC5BZG1pbi5TZXJ2aWNlSW1wb3J0RXhwb3J0CiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZSBTZXJ2aWNlIEltcG9ydEV4cG9ydCBtb2R1bGUuCiAqLwpDb3JlLkFnZW50LkFkbWluLlNlcnZpY2VJbXBvcnRFeHBvcnQgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKCiAgICAgICAgJC5lYWNoKFsnU2VydmljZXMnXSwgZnVuY3Rpb24gKF9JbmRleCwgRWxlbWVudHMpIHsKCiAgICAgICAgICAgICQoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il1bbmFtZT0iU2VsZWN0QWxsJytFbGVtZW50cysnIl0nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICBDb3JlLkZvcm0uU2VsZWN0QWxsQ2hlY2tib3hlcygkKHRoaXMpLCAkKCdbbmFtZT0iJytFbGVtZW50cysnIl0nKSk7CgogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKCiAgICB9OwoKICAgIHJldHVybiBUYXJnZXROUzsKCn0oQ29yZS5BZ2VudC5BZG1pbi5TZXJ2aWNlSW1wb3J0RXhwb3J0IHx8IHt9KSk7CgpDb3JlLkFnZW50LkFkbWluLlNlcnZpY2VJbXBvcnRFeHBvcnQuSW5pdCgpOwo=</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>